帮我看一下,这个有错吗?题意是求1+2!+3!...+10!的和
#include <stdio.h>
void main()
{
int num=1,i,j,sum=0,ji=1;
for(i=1;i <=10;i++){
for(j=1;j <=i;j++){
ji=ji*j;
}
sum=sum+ji;
num++;
}
printf( "和为:%d\n ",sum);
}
[解决办法]
#include <stdio.h>
int main()
{
int n=10;
long double sum=0,j=1;
for(int i=1;i <=n;i++)
{
j*=i;
sum+=j;
}
printf( "%lf\n ",sum);
return 0;
}
[解决办法]
明显10!超出了int可存储的范围,试着用uint64
[解决办法]
#include <stdio.h>
void main()
{
int num=1,i,j,sum=0,ji=1;
for(i=1;i <=10;i++){ //
for(j=1;j <=i;j++){ //
ji=ji*j; // 你想算什么? 这不是阶乘啊.
}
sum=sum+ji; //
num++;
}
printf( "和为:%d\n ",sum);
}
[解决办法]
#include <stdio.h>
#define LINE_SIZE 3
void main()
{
int num=1,i,j,sum=0,ji=1;
for(i=1;i <=LINE_SIZE;i++){
ji=1; // 这里,就对了
for(j=1;j <=i;j++){
ji=ji*j;
}
sum=sum+ji;
num++;
}
printf( "和为:%d\n ",sum);
}
[解决办法]
然后才是 长度问题
[解决办法]
#include <stdio.h>
void main()
{
long num=1,i,j,sum=0,ji=1; //长度
for(i=1;i <=10;i++){
ji=1; //初值
for(j=1;j <=i;j++){
ji=ji*j;
}
sum=sum+ji;
num++;
}
printf( "和为:%d\n ",sum);
}
[解决办法]
主要就是int的问题
[解决办法]
上面说错了。。。。应该是2^31-1,还有一位符号位。
[解决办法]
恩 就是没有初始化的问题 !
int是范围是够了的
[解决办法]
变量在使用之前都应该初始化.
[解决办法]
float t,s;
int i;
for(i=1;i <=5;i++)
{
t*=i;
s+=t;
}
[解决办法]
我晕,没看有兄弟给出了..
[解决办法]
你没有把内循环的ji每次清零,
也可以不用两重循环,只要一重循环就够了,上面都有人给出了代码。
还是就是要注意数据类型,int能装下10!吗?
[解决办法]
sum没初始化,跟int范围无关
[解决办法]
#include <stdio.h>
void main()
{
int i,j=1,sum=0;
for(i=1;i <=10;i++)
{
j*=i;
sum+=j;
}
printf( "和为:%d\n ",sum);
}
那用两重循环,我是这样做D,4037913 - -!!!
[解决办法]
每次内循环结束要把ji的值清除掉
否则比如第一次循环结束ji 中存的是1!在1!的基础上又乘上2!肯定会结果不对
[解决办法]
首先注意ji的初始化,再注意int的范围问题
[解决办法]
这个问题真的很不想给你解答,并不是说简单不简单的问题,而是你根本就没动脑子,如果你再多考虑10分钟的话,你就自己可以解决问题了,真的,10分钟就够了
[解决办法]
哎多想想就好啦
初始化阶层的问题啊
建议可以结了
[解决办法]
#include <stdio.h>
void main()
{
int i=0;
int j=1;
long sum=0;
for(i=1;i <=10;i++)
{
j*=i;
sum+=j;
}
printf( "%d ",sum);
}