C语言阶乘问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:57:44
大家帮忙看一下我这个求一个数的阶乘哪里不对.谢谢!
#include<stdio.h>
void main()
{
int a,sum=0,i=1;
char x;
do
{
printf("请输入一个数:");
scanf("%d",&a);
while(i<=a)
{
sum=sum+i*(i+1);
}
printf("sum=%d",sum);
printf("是否继续:");
fflush(stdin);
scanf("%c",x);
}while(x=='y' || x=='Y');
}
不行,
程序是运行以后输入一个数然后就不动了,
就一个光标在闪.
是什么原因造成的?

#include<stdio.h>
void main()
{
int a,sum=1,i=1; //sum要初始化成1,这样0的阶乘结果也正确了,0!=1
char x;
do
{
sum=1;
i=1; //要在这里初始化,否则使用者算完一次再继续算,结果就是错的了
printf("请输入一个数:");
scanf("%d",&a); //你这里没有对用户输入的数据进行检查,计算结果可能是错的
while(i<=a)
{
sum=sum+i*(i+1); //这里写错了应该是sum=sum*i,你可以看一下阶乘的定义
i++; //没有自增
}
printf("sum=%d",sum);
printf("是否继续:");
fflush(stdin);
scanf("%c",&x); //..
}while(x=='y' || x=='Y');
}

你的i没有自增
在sum=sum+i*(i+1); 后面写一个i++;就行了 呵呵!