初学C语言,编了个求阶乘的代码,分析了没问题,运行就报错,单步调试正在学,先帮忙分析一下!谢谢!

2024-12-12 08:07:48
推荐回答(3个)
回答1:

首先,s记录的是阶乘的和,假如你想求的小于等于n的每一个数的阶乘的话 请输出t
还有 main之前最好请加void
还有变量最好用一些好记得字符 如s表示的是和 可以用sum表示等等 便于查看
还有你的错误不知道是啥问题 我弄了没问题 你看看是不是你的环境有问题
阶乘的变化速度很快,你可以试一试 ,如果你要n的数值很大,int类型的s是无法保存正确的结果的,你可以试一试
下面是我的源码
#include
void main()
{
int t,m,s,n;
s=0;t=1;
printf("输入n:");
scanf("%d",&n);
for(m=1;m<=n;m++)
{ t*=m;
s+=t;
printf("%d!=%d\n",m,t);
}
}

回答2:

我来帮你:
#include
int main(void)
{
int i,n;
float j;
printf("Enter a number(q to quit):");
while(scanf("%d",&n)==1)
{
for(i=1,j=1;i<=n;i++)j*=i;
printf("%d!=%g\n",n,j);
printf("Enter a number(q to quit):");
}
printf("Done!");
return 0;
}
看看吧这个简单点。
这个最多算到35!
很不错的了。

回答3:

1)m=1应该在定义后立即附值 不能放在for里面 如果这样只要n大于等于1 for循环就不会停下了
2)m++应该放到s+=t;后面 应为放到for()里他就先加了1 最后会导致乘到 n+1 才跳出循环
3)printf("%d",s);应该放到下面那个括号下面来 放到for里会导致每次乘后都输出一个值 其实我们只是要最终结果 中间的不必输出来