为什么选A不选C?

下列程序的运行结果是在屏幕上输出(  )。

#include <stdio.h>
float sum(int n)
{
    float s=0;
    int i;
    for(i=1;i<=n;i++)
        s+=1/i;
    return s;
}

void main()
{
    printf("%f",sum(3));
}

A.

1.000000

B.

1

C.

1.833333

D.

0

    进入for循环i=1, 1/1=1,这时s=1.0, 当i=2时,1/2=0.5,此时i强转为int型,s原来就是1.0,结果为s+0=1.0

    i大于1结果都是0,选A

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-21
i是整型,两个整数相除结果为整数
s是单精度浮点数,所以结果为A
第2个回答  2020-05-21
1/i结果只能为0,i为整型。
s为float型,所有小数点后有零。
第3个回答  2020-05-22
我也一开始没考虑I是整数强制转换的问题
第4个回答  2020-05-21
/是取整,1/1=1,1/2=0,1/3=0
由于s是浮点型,所以是1.0000