又是一道不写好精度就搞不了的题
输入 a b c 输出 1+2+…+a + 12+22+…+b^2 + 1/1+1/2+…+1/c 样例输入 100 50 10 样例输出 47977.93
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 源错误程序:
#include<stdio.h>
int main()
{
int a,b,i,a1=0,b1=0;
double c=0,c1=0,sum=0;
scanf("%d",&a);
scanf("%d",&b);
scanf("%lf",&c);
a1=((1+a)*a)/2;
for(i=1;i<=b;i++)
b1+=i*i;
for(i=1;i<=c;i++)
{
c1+=1.0/c;
}
sum=a1+b1+c1;
printf("%0.2lf",sum);
return 0;
}
一直都将tm的后面的当成int型来算, 我也不知道为什么。 (知道了。。原来有一个循环中,将常数带进去了。。。。)
修改成:
#include<stdio.h>
int main()
{
int a,b,i,a1=0,b1=0;
double c=0,c1=0,sum=0;
scanf("%d",&a);
scanf("%d",&b);
scanf("%lf",&c);
a1=((1+a)*a)/2;
for(i=1;i<=b;i++)
b1+=i*i;
for(i=1;i<=c;i++)
{
c1+=1.0/i;
}
sum=a1+b1+c1;
printf("%0.2lf",sum);
return 0;
}