C语言小题(国二 函数这章)
发布网友
发布时间:2022-04-23 08:45
我来回答
共3个回答
热心网友
时间:2022-06-18 13:09
1.全局函数fun中的c与main主函数的c是两个不同的,他们占用的地址不同,应该用指针可以解决问题,修改如下;
int fun ( int a,int b, int *c )
{ *c=a*b;}
main()
{ int c;
fun (2,3,c); printf ("%d",&c);
]
2.按for语句循环来一步一步演示
当i=0;a=0+f(0),将i传递给n,n=0,直接返回s=1.0;a=1.0;
当i=1;a=1.0+f(0),将i传递给n,n=1,一次循环,返回s=s+1.0/i=1.0+1.0=2.0;
a=1.0+2.0=3.0;
当i=2;a=3.0+f(0),将i传递给n,n=2,,两次循环,s=1.0+1.0=2
s=2.0+1.0/2=2.5
最后得a=3.0+2.5=5.5
因为"%f"为默认输出,小数点一般保留6位,所以为5.500000
本人一次解答问题,有错误也难免,不好意思了!
热心网友
时间:2022-06-18 13:10
1、因为c是作为参数传递给子函数,这种参数传递是单方向的,不会返回
2、函数f调用了3次:f(0),f(1)、f(2)。分别等于1、1+1、1+1+0.5,三个累加,得到5.5
另外子函数中s和i没有定义,s为double型,i为int型,应该为
#include <stdio.h>
double f ( int n)
{double s = 1.0;
for (int i=1;i<=n;i++) s+=1.0/i;
return s;
}
main()
{ int i,m=3; double a=0.0;
for( i=0;i<m;i++) a+=f(i);
printf ("%f",a);
}
热心网友
时间:2022-06-18 13:10
第一题,函数传入参数是形参。
在函数中改变参数的值并不影响函数外部变量的值。
第二题
main函数第一次传入0参数,函数内不循环,直接返回1.0
第二次传入1参数,函数内循环一次,返回2
第三次传入2参数,函数内循环两次,返回1+1+0=2
所以三次一共是5
这里的关键就是1.0/i,当i是2时,不是你要的0.5,而是系统舍掉了,返回0。