哪个热心人帮我看看这个C程序错在哪了。

来源:百度知道 编辑:UC知道 时间:2024/06/14 05:55:14
#include<stdio.h>
void main()
{
float sum=1.0;
int i=1;
int j;
while (i<=20 && i>=1)
{
j=i;
while (j>1)

j=j*(j-1);

sum=sum+j;
i++;
}
printf("1!+2!++++++=%e\n",sum);
getch();

}

while (j>1)

j=j*(j-1);
楼主2句实现不了求j的阶乘,当i=2的时候,程序在这里进入死循环(循环体内没有修改控制变量j的值)同时由于sum=sum+j,sum初值为0,而不是1.0.
我修改的代码如下:
#include<stdio.h>
void main()
{
float sum=0;
int n; /*增加变量n,用作存放j的阶乘*/
int i=1;
int j;
while (i<=20 && i>=1)
{
j=i;
for(n=1;j>0;j--)/*求j的阶乘*/
n*=j;
sum=sum+n;
i++;
}
printf("1!+2!++++++=%ld\n",sum);

}

#include<stdio.h>
void main()
{
float sum=0;
int i=1;
int j=1,k;
while (i<=20 && i>=1)
{
k=1;
while (k<=i)
{
j*=k;
k++;
}

sum=sum+j;
i++;
}
printf("1!+2!++++++=%e\n",sum);
getch();

}

这样就可以了,你的程序问题很多