关于用C语言求10的阶乘
来源:百度知道 编辑:UC知道 时间:2024/05/18 02:57:12
main()
{
int i ,s=1;
for(i=1;i<=10;i++)
s*=i;
printf("%d\n,s");
}
求出来是24320,是因为数据太长溢出了,所以我就把%d改成了%ld,没想到答案却是127229696,都不是正确答案,应该怎么修改呢?
{
int i ,s=1;
for(i=1;i<=10;i++)
s*=i;
printf("%d\n,s");
}
求出来是24320,是因为数据太长溢出了,所以我就把%d改成了%ld,没想到答案却是127229696,都不是正确答案,应该怎么修改呢?
那是因为你的变量在定义的时候没有改。
我编的完整程序如下:
#include <stdio.h>
main ()
{
unsigned long long int sum=1;
char i;
for (i=1;i<=10;i++)
sum*=i;
printf ("%ld",sum);
return 0;
}
把s的初始化写成long int s;输出时在用%ld,就可以了!
上面说的对,你上面S的类型应该和输出时类型相一致,我以前调试过。
在这里都要改成长整形。