计算1到N的阶乘之和,结果是乱码,请大神帮忙看看

#include
unsigned long Fact(unsigned int n );
int main()
{

int m;
unsigned long  sum;
long ret;
do{
    printf("input m:");
    scanf("%d",&m);
}while (m<0);    /*增加对输入数据的限制,确保输入的数据为无符号整型*/
sum=Fact(m);
printf("sum=%lu\n",sum);

}
/*函数功能:用迭代法计算无符号整型变量n!,再求和*/
unsigned long Fact(unsigned int n )
{
unsigned int i;
unsigned long result =1,sum;
for (i=1;i<=n;i++)
{
result *=i;
sum+=result;
}

return sum;

}

c

1个回答

printf("sum=%lu\n",sum);
不是所有的c语言都支持这个格式。

qq_40940514
小~~ 回复chen_chen_123: 谢谢
大约 2 年之前 回复
qq_40940514
小~~ 回复caozhy: 谢谢
大约 2 年之前 回复
chen_chen_123
chen_chen_123 我运行你的程序没有出现乱码,就是sum没有初始化,会终止运行,初始化一下就好了,所以应该真的是编译器的问题吧
大约 2 年之前 回复
qq_40940514
小~~ 回复caozhy: 但是我只算单个阶乘值时,printf("%d!=%ld\n",i,Func(i));能支持,感觉这俩差不多
大约 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_40940514: 代码不要改,但是要找一个支持的编译器。
大约 2 年之前 回复
qq_40940514
小~~ 请问那咋改
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问