关于用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,都不是正确答案,应该怎么修改呢?

那是因为你的变量在定义的时候没有改。
我编的完整程序如下:
#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的类型应该和输出时类型相一致,我以前调试过。
在这里都要改成长整形。