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

#include<stdio.h>
main()
{
int t,m,s,n;
s=0;t=1;
printf("输入n:\n");
scanf("%d",&n);
for(m=1;m<=n;m++)
{ t*=m;
s+=t;
printf("%d",s);
}
}
错了,倒数第二个 { 在printf前。求阶乘和!

首先,s记录的是阶乘的和,假如你想求的小于等于n的每一个数的阶乘的话 请输出t
还有 main之前最好请加void
还有变量最好用一些好记得字符 如s表示的是和 可以用sum表示等等 便于查看
还有你的错误不知道是啥问题 我弄了没问题 你看看是不是你的环境有问题
阶乘的变化速度很快,你可以试一试 ,如果你要n的数值很大,int类型的s是无法保存正确的结果的,你可以试一试
下面是我的源码
#include<stdio.h>
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);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-09
我来帮你:
#include<stdio.h>
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!
很不错的了。
第2个回答  2011-06-09
1)m=1应该在定义后立即附值 不能放在for里面 如果这样只要n大于等于1 for循环就不会停下了
2)m++应该放到s+=t;后面 应为放到for()里他就先加了1 最后会导致乘到 n+1 才跳出循环
3)printf("%d",s);应该放到下面那个括号下面来 放到for里会导致每次乘后都输出一个值 其实我们只是要最终结果 中间的不必输出来
相似回答