C语言编程求出1/2+2/3+3/4+……+19/20的值

来源:百度知道 编辑:UC知道 时间:2024/06/14 07:44:11
请问#include "stdio.h"
#include "conio.h"
main()
{
int a,b,t;
float sum=0;
for(a=1;a<=19;a++)
for(b=2;b<=20;b++)
{
sum=sum+a/b;
t=a;a=a+1;b=t;
}
printf("sum is %6.4f\n",sum);
}
这个程序哪里对,我运行的结果总是错的,谢谢指教
这个错误算法,得到的结果是19.0000

一是 逻辑错误
二是 除法错误

a/b 因为都为整形 , 所以 除法得不到小数, 本题中为0

第二 这个算法本身有误
可以改为:

for(a=1;a<=19;a++)
{
sum=sum+(float)a/(a+1);
}

接着 yunbaishuilan 的回答,
在声明变量时,应该是 float a; 非 int a;

另外,yunbaishuilan 的回答,很不错的啦

两个for嵌套出错了

其实只需要一个for

for(int i=1;i<=19;i++)
{
sum = sum + i/(i+1)
}

这样就可以了

因为a ,b都是整形的数据!所以a/b=整形数据
例如a=1 b=4 a/b=0 或a=5 b=4 a/b=1
#include"stdio.h"
#include "conio.h"
main()
{
float a,b,t;
float sum=0;
for(a=1;a<=19;a++)
for(b=2;b<=20;b++)
{
sum=sum+a/b;
t=a;a=a+1;b=t;
}
printf("sum is %6.4f\n",sum);
}

把a,b换成float类型,且a=1.0;a<19.0;a++
b=1.0;b<19.0;b++