看着个C语言错在哪儿? 要计算s=1+1/2+1/3+.....+1/10

main()
{
int n;
float s; s=1.0;
for(n=10;n>1;n--) s+=1/n;
printf("%6.4f\n",s);
}

1和n是整型, 1/n默然是int型,所以只对结果的小数取整数部分,结果就不对。

修改,强制类型转换:如下,

#include<stdio.h>
void main()
{
int n;
float s;
s=1.0f;
for(n=10; n>1; n--)
s=s+(float)1/n;
printf("%6.4f\n", s);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-02
for(n=10;n>=1;n--) s+=1/n;
把n>1改成n>=1,不然到n=2时就退出了
第2个回答  2013-01-02
#include <stdio.h>
void main()
{
float n;
float s;
s=1.0;
for(n=10.0;n>1;n--)
s+=1/n;
printf("%6.4f\n",s);
}

如果我没猜错 你的加法那出现了问题,因为一个浮点型数据不能和整形数据 相加。只有同种类型的数据才可以运算。来自:求助得到的回答
第2个回答  2013-01-02
主函数main都写错了,整数的除法和浮点数的除法结果时不一样的
int main(void)
{
int n;
float s=0;
for(n=10;n>1;n--)
s+=1.0/n;

printf("%6.4f\n");
return 0;

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网