/*求以下三数的和 保留2位小数 1~a之和 1~b的平方和 1~c的倒数和 输入 a b c 输出 1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/c */ #include<stdio.h> int main() { int a,b,c,i=1,sum_1=0,sum_2=0; float j=1,sum_3=0; scanf("%d %d %d\n",&a,&b,&c); while(i<=a) { sum_1+=i;//先算1到a的和 i++; } i=1; while (i<=b) { sum_2+=i*i; //再算1^2+2^2+...+b^2 i++; } while (j<=c) { sum_3+=1/j; j++; } printf("%.2f",sum_1+sum_2+sum_3); return 0; } 为什么是错的。求解
请问~我的代码哪里错了?我自己编译结果是对的啊?提交就错?拜托啦~ #include <iostream> using namespace std; int main() { int a,b,c; float sum; cin>>a>>b>>c; float sum1,sum2,sum3; for(float i=1;i<=a;i++){ sum1+=i; } for(float j=1;j<=b;j++){ sum2+=j*j; } for(float k=1;k<=c;k++){ sum3+=1/k; } sum=sum1+sum2+sum3; printf("%.2f\n",sum); return 0; }
#include <iostream> #include <iomanip> using namespace std; int main() {int i=0,j=0,k=0,a,b,c,sn1,sn2; float sn3,sn; cin>>a>>b>>c; for (i=1;i<=a;i++) {sn1+=i;} for (j=1;j<=b;j++) {sn2+=j*j; } for (k=1;k<=c;k++) {sn3+=1.00/k; } sn=sn1+sn2+sn3; cout<<fixed<<setprecision(2)<<sn<<endl; } 求问哪有错,自己运行没问题,平台老是报答案错误
象帝之先 2019-07-24 08:04:52 |
#include <iostream> #include <iomanip> using namespace std; int main() {int i=0,j=0,k=0,a,b,c,sn1 = 0,sn2 = 0; float sn3 = 0,sn; cin>>a>>b>>c; for (i=1;i<=a;i++) {sn1+=i;} for (j=1;j<=b;j++) {sn2+=j*j; } for (k=1;k<=c;k++) {sn3+=1.00/k; } sn=sn1+sn2+sn3; cout<<fixed<<setprecision(2)<<sn<<endl; }
象帝之先 2019-07-24 08:05:14 |
#include <iostream> #include <iomanip> using namespace std; int main() {int i=0,j=0,k=0,a,b,c,sn1 = 0,sn2 = 0; float sn3 = 0,sn; cin>>a>>b>>c; for (i=1;i<=a;i++) {sn1+=i;} for (j=1;j<=b;j++) {sn2+=j*j; } for (k=1;k<=c;k++) {sn3+=1.00/k; } sn=sn1+sn2+sn3; cout<<fixed<<setprecision(2)<<sn<<endl; }
象帝之先 2019-07-24 08:05:35 |
好像不能保证格式粘贴
象帝之先 2019-07-24 08:07:56 |
你的sn1,sn2,sn3没有初始化,养成一个好习惯,在定义变量的时候要记得为变量赋初值<\t>所以sn1 = 0;sn2 = 0;sn3 = 0;不然变量中会存一个随机的垃圾值
#include <iostream> #include <iomanip> using namespace std; int main() { int a,b,c; cin>>a>>b>>c; int suma=0,sumb=0; long double sum=0,sumc=0; for (int i = 1; i <=a; i++) { suma+=i; } for (int j = 1; j <=b; j++) { sumb+=j*j; } for (int k = 1; k <=c; k++) { sumc+=1/k; } sum=suma+sumb+sumc; cout<<fixed<<setprecision(2)<<sum<<endl; return 0; } 我的这个计算结果也是47976.00 求解答为什么
#include<iostream> #include<math.h> #include<iomanip> using namespace std; int main(){ int a=0,b=0,c=0; long double x=0,y=0,z=0; while(cin>>a>>b>>c){ for(int i=1;i<=a;i++) x+=i; for(int j=1;j<=b;j++) y+=j*j; for(int k=1;k<=c;k++) z+=1/k; cout<<fixed<<setprecision(2)<<x+y+z; } return 0; }
象帝之先 2019-03-28 21:28:11 |
不好意思,这段时间没上,你的问题主要在第三个for循环上,1是整数,k是整数,1/k 整数/整数=整数,所以可以把循环参数k设成float型或者在+=后面强制转换,亦或者把1/k改为1.0/k 即可,感谢支持~
#include<iomanip> using namespace std; int main(){ int a=0,b=0,c=0; long double x=0,y=0,z=0; while(cin>>a>>b>>c){ for(int i=1;i<=a;i++) x+=i; for(int j=1;j<=b;j++) y+=j*j; for(int k=1;k<=c;k++) z+=1/k; cout<<fixed<<setprecision(2)<<x+y+z; } return 0; } 我这个计算的结果是47976.00 跟答案略有区别,请问是什么原因?
as 2019-04-11 22:03:58 |
不好意思,这段时间没上,你的问题主要在第三个for循环上,1是整数,k是整数,1/k 整数/整数=整数,所以可以把循环参数k设成float型或者在+=后面强制转换,亦或者把1/k改为1.0/k 即可,感谢支持~
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1019 |
简单的a+b (C语言代码)浏览:676 |
高精度加法 (C++代码)(大数加法)浏览:1008 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:563 |
【出圈】 (C语言代码)浏览:824 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1334 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:637 |
企业奖金发放 (C语言代码)浏览:2459 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:497 |
C二级辅导-等差数列 (C语言代码)浏览:831 |
999999 2019-11-16 17:22:34 |
#include<stdio.h> int main() { double i,j,k,m,n,sum1=0,sum2=0,sum3=0,q;double sum=0; scanf("%lf,%lf,%lf",&i,&j,&k); for(m=1;m<=i;m++) sum1+=m; for(n=1;n<=j;n++) sum2+=n*n; for(q=1;q<=k;q++) sum3+=1.0/q; sum=sum1+sum2+sum3; printf("%5.2lf",sum); return 0; }
999999 2019-11-16 17:22:47 |
为啥错