这个题,求阶乘和,循环遍历就可以了,不用双重个循环,每次计算阶乘和,然后累加就可以
主要注意数值的大小,用int肯定放不下的,必须用double,并且中间的阶乘结果也要用double才能不会出现答案错误的问题。
PS:printf的科学计数法格式是%e
应该看一下就明白,答案如下:
#include<stdio.h> int main() { int i; double j=1,sum=0; for(i=1;i<=30;i++) { j = j*i; sum = sum+j; } printf("%.2e\n",sum); return 0; }
0.0分
72 人评分
#include<stdio.h> int main(){ double sum=0.0; // 2 = 1*2 3 = 1*2*3 = 6 for(int i=1;i<=30;i++){ double m=1; for(double j=1.0;j<=i;j++){ m = m*j; } sum+=m; } printf("%.2e",sum); }
#include <stdio.h> int main() { double sum0=0; int i; int a=1; for(i=1;i<=30;i++){ a=a*i; sum0+=a; } printf("%.2e",sum0); return 0; } 感覺差不多鴨:(
为什么用long double会错误,改成double。long double不是比double范围大很多吗。
Artoria 2020-04-08 10:42:05 |
貌似long double在64位机器上有些问题。。。我写的输出格式是%Lf。。不太懂为啥long double 用不了