计算机二级 C语言 函数 谢谢!

有以下程序#include<stdio.h>doublef(intn){inti;doubles;s=1.0;for(i=1;i<=n;i++)s+=1.0/i;retu... 有以下程序
#include<stdio.h>
double f(int n)
{ int i; double s;
s=1.0;
for(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\n",a);
}
程序的输出结果是多少

求详细解释
运算过程 不胜感激 谢谢!!
展开
 我来答
b_spike
2015-01-28 · TA获得超过3686个赞
知道大有可为答主
回答量:3724
采纳率:78%
帮助的人:1149万
展开全部

main函数中最后输出的a的值应为f(0)的值+f(1)的值+f(2)的值,原因是循环变量i的值只能是0,1,2,当i的值为3的时候循环就结束了,a原来是0.0,在循环中是累加

f(0)的值是1.0,因函数f中循环被架空,s的值不变

f(1)的值是2.0,其中的循环只执行了1次,s的值将是1.0+1.0=2.0

f(2)的值是2.5,其中的循环执行了2次,s的值将是1.0+1.0+0.5=2.5

由此可得出 main函数中a最终的值将是0.0+1.0+2.0+2.5=5.5


附运行结果

更多追问追答
追问
n是什么 for语句中必须得<=n才能进行循环可是n是什么 不知道n的值 怎么判别能否进行循环呢?
追答
函数f里面n的值是参数传进来的
而main函数里面用了f(i),那么函数f在运行的时候,n的值就是当时main函数的循环中i的值(但注意只是值相同,并不是同一变量,所以n的值如果在f函数中发生了改变,是无法同时改变main函数中i的值的)

函数f中n的值为0的时候,肯定是没法循环的,因1<=0这个逻辑表达式的结果为逻辑假
函数f中n的值为1的时候,在该函数中就只有i为1的这一次循环,当i++执行后i的值为2时2<=1的值为逻辑假,循环将结束
函数f中n的值为2的时候,在该函数中就会有i为1和2这两次循环,当i的值变为3的时候就会结束

另外,全局函数main中的循环变量i和函数f中的循环变量i完全不是一回事,必须当作两个不同的变量来看待
荀宝谷梁琛丽
2020-04-22 · TA获得超过3802个赞
知道大有可为答主
回答量:3124
采纳率:32%
帮助的人:173万
展开全部
如果D选项的逗号不是你疏忽而漏掉的话
A、编译错误,“字符串”,传递参数的不匹配
B、编译错误,返回类型的错误,void函数是没有返回值的
C、传递给fun函数的为'5'和2.8
D、没有逗号,编译错误,如果有逗号的话,ch的值为ACSII码为32的字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-01-28
展开全部
#include<stdio.h>

double f (int n)
{

int i;

double s;
s=1.0;
for(i=1;i<=n;i++) 循环n次

s+=1.0/i; s=s+1.0/i s=s+1.0除以i
return s;
}
main(
{

int i, m=3;

double a=0.0;
for(i=0;i<m;i++)
a+=f(i); a=a+f(i) f(i)调用上面的函数,i即为上面的n
printf("%f\n",a);
}

具体运算结果自己试试
追问
n是什么 for语句中必须得<=n才能进行循环可是n是什么 不知道n的值 怎么判别能否进行循环呢?
追答
f是一个函数,参数时n,当a+=f(i)时调用f函数,其中的参数是i,例如:当i=2, a+=f(i)运行时,由于f(2)不知道是什么,这时调用函数double f (int n) ,其中n为2,进行循环,这里面的n控制循环次数,即循环2次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式