为什么我输入以下程序却不能显示呢

#include
int main()
{
int i,n,s;
s=0;
for(i=1;i<=20;i++)
{
n=1;
while (i!=0)
{
n=i*n;
i--;
}
s=s+n;
}
printf("总和为%d\n",s);
return 0;
} //求一到二十各个数的阶乘的总和

你是在什么环境下运行的,是不是输入窗口显示了一下,所以你认为不能显示。
如果是,考虑使用 GetCh 之类的函数来等等用户按键再退出 。

首先,你这个是一个死循环.

 #include <stdio.h>
int main()
{
    int i, n, s;
    s = 0;
    for (i = 1; i <= 20; i++)
    {
        n = 1;
        while (i != 0)
        {
            n = i*n;
            i--;//这是一个死循环.在这个大循环里,每次走到这个小循环里之后,都会将变量i减成0.然后再在大循环里置成1.
        }
        s = s + n;
    }
    printf("总和为%d\n", s);
    return 0;
} //求一到二十各个数的阶乘的总和

可以这么改

 #include <stdio.h>
int main()
{
    int i, n, s;
    s = 0;
    for (i = 1; i <= 20; i++)
    {
        n = 1;
        int t = i;
        while (t != 0)
        {
            n = t*n;
            t--;
        }
        s = s + n;
    }
    printf("总和为%d\n", s);
    return 0;
} //求一到二十各个数的阶乘的总和

简化一下代码,可以这么写

 #include <stdio.h>
main()
{
    int i;
    long p = 1;
    long s = 0;
    for (i = 1; i <= 20; i++)
    {
        p = p*i;
        s = s + p;
    }
    printf("总和为%d\n", s);
}

循环有问题。。。 你在while循环中 把 i 变量做了减减。 但是出了while循环后 在for 循环中又做了 i 加加。。。 这样的话 你的i 其实一直是1. 一直在做for循环。。。。

很简单的c语言程序啊,我把算法写出来了
int main()
{
int i,sum=1,sumTotle=0;
for (i=1; i<=20; i++) {
sum=1;
for (int j=1; j<=i; j++) {
sum *=j;
}
sumTotle += sum;
}
}