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);
}
我们还可以将以上程序进行修改,修改为通过主函数来调用f1和f2函数。
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);
}