问题 单项选择题

要求以下程序的功能是计算s=1+1/2+1/3+…+1/10
main()
int n; float s;
s=1.0;
for(n=1O;n>1;n--)
s=s+1/n;
printf("%6.4f\n",s);

程序运行后输出结果错误,导致错误结果的程序行是( )。

A.s=1.0;

B.for(n=1O;n>l;n--)

C.s=s+1/n;

D.printf("%6.4f\n",s);

答案

参考答案:C

解析: 程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此可以知道导致程序运行后输出结果错误的行为“s=s+1/n;”,所以,4个选项中选项C符合题意。

单项选择题
单项选择题