实验七 函数(一)

u    实验目的

1、掌握定义函数的方法。

2、掌握函数实参与形参的对应关系以及“值传递”的方式。

3、掌握函数的嵌套调用和递归调用的方法。

4、掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。

5、学习对多文件程序的编译和运行。

u    预习内容

见教材第八章

u    实验重点

1、掌握定义函数的方法。

2、掌握函数实参与形参的对应关系以及“值传递”的方式。

u    实验难点

1、掌握函数实参与形参的对应关系以及“值传递”的方式。

2、掌握函数的嵌套调用和递归调用的方法。

u    实验内容

1、写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。

2、用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。

3、用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定。

u    参考例题

【例】计算s=22!+32!

本题可编写两个函数,一个是用来计算平方值的函数f1,另一个是用来计算阶乘值的函数f2。主函数先调f1计算出平方值,再在f1中以平方值为实参,调用 f2计算其阶乘值,然后返回f1,再返回主函数,在循环程序中计算累加和。

long f1(int p)

{

    int k;

    long r;

    long f2(int);

    k=p*p;

    r=f2(k);

    return r;

}

long f2(int q)

{

    long c=1;

    int i;

    for(i=1;i<=q;i++)

      c=c*i;

    return c;

}

main()

{

    int i;

    long s=0;

    for (i=2;i<=3;i++)

      s=s+f1(i);

    printf("\ns=%ld\n",s);

}

我们还可以将以上程序进行修改,修改为通过主函数来调用f1f2函数。

long f1(int p)

{

    int k;

    k=p*p;

    return k;

}

long f2(int q)

{

    long c=1;

    int i;

    for(i=1;i<=q;i++)

      c=c*i;

    return c;

}

main()

{

    int i;

    long s=0;

    for (i=2;i<=3;i++)

      s=s+f2(f1(i));

    printf("\ns=%ld\n",s);

}

公告通知
教学日历
疑难留言
同学你好!对本课程有哪些建议?