}
6.下面程序中,函数fun的功能是根据形参m计算公式T=1/1!+1/2!+1/3!+ +1/m!的值,上机调试,请改正程序中的错误。当从键盘输入10时,给出程序运行的正确结果(按四舍五入保留10位小数)。
正确代码为:(输入10时的结果:1.7182818011)
#include <stdio.h>
main( )
{ double fun(int m); //先调用再定义,且不是能缺省的int型,请加上函数说明。
int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t=%12.10lf \n",fun(m));
}
double fun(int m)
{
double fac,t=0.0;
int i=1,j;
for(i=1;i<=m;i++)
{
fac=1.0;
for(j=1;j<=i;j++) fac=fac*j; //逻辑有误,改为:for(j=1;j<=i;j++) fac=fac*j;这样才表示求i!,原程序行是求i的m次方。
t+=1.0/fac;
}
return t;
}
任务2 函数的嵌套调用
1.跟踪调试下面程序,注意函数调用的过程中形参、实参的关系。记录并分析结果;将形参a,b对应改为x,y,使之与实参变量同名,记录并分析结果。
#include <stdio.h>
main( )
{
int t,x=2,y=5;
int swap(int,int);
printf("(1) in main: x=%d,y=%d\n",x,y);
swap(x,y);
printf("(4) in main: x=%d,y=%d\n",x,y);
}
swap(int a,int b)
{
int t;
printf("(2) in swap: a=%d,b=%d\n",a,b);
t=a;
a=b;
b=t;
printf("(3) in swap: a=%d,b=%d\n",a,b);
}
结果:
(1) in main: x=2,y=5
(2) in swap: a=2,b=5
(3) in swap: a=5,b=2