RRROLE 发表于 2020-5-9 23:28:30

求助,无法运行。


javascript:;


#include<stdio.h>
#include<stdlib.h>
int main ()
{
int S,n,m,i,k;
printf ("请输入整数n,n小于等于50\n");
scanf("%d",&n);
m=n*(n-1);
for (n;n=n-1;n=2);
{m=(n-1)*m;
}
k=m;
S=k+k/n;
for(n;n=n*i;n=k);
{for(i;i=n-1;i=1);
S=S+k/n;

gdmao002 发表于 2020-5-9 23:28:31

本帖最后由 gdmao002 于 2020-5-10 00:44 编辑

unsigned long long int sum = 0;   //sum就是最终阶层值,因为50以内的阶层是一个很大的数;
int t = 1;
int i, n; //n为用户输入 n >= 1 && n <= 50;

printf("请输入一个整数n(1<=n<=50)\n");
scanf("%d", &n);

for(i = 1; i <= n; i++)
{
        t = t*i;//t*i 代表n个数的阶层
        sum = t+sum; //代表n个数的阶层的和      
}

printf("sum = %llu\n", sum); //因为定义sum是无符号类型 这样输出的值会比较大 无符号输出是%u,因为加入了2个long,所以输出是llu

ba21 发表于 2020-5-9 23:29:49

代码也不全啊

RRROLE 发表于 2020-5-9 23:32:36

上图

RRROLE 发表于 2020-5-9 23:33:09

求助啊求助

RRROLE 发表于 2020-5-9 23:56:12

ba21 发表于 2020-5-9 23:29
代码也不全啊

题目发在下面了,求解答

gdmao002 发表于 2020-5-10 00:15:09

for (n;n=n-1;n=2);
{m=(n-1)*m;
}
你这里 n = 2设置有问题吧;会进入死循环的
比如n如果输入1 那么 这个程序 判断真假(n = n-1) ,n 就是n = 1-1;也就是n = 0;
按照C语言标准0是假就跳过这个循环了;
如果 n > 1 && n<= 50;
那么这里就会进入死循环;
比如 n = 2 的时候, 那么 n = n-1,这里的n 就是1 ,按照C语言标准非0即是真
那么会开始运行循环内语句块,暂且不说内部写了什么,就说n = 2 ;这里 每次你给它赋值2,那么又会进入判定 n = n-1;那么这个循环就是一个死循环;
你要好好看看for循环 怎么用啊兄弟!
终上所述:
可以看出你的程序 要么直接进行 n =1;其他的n值 会进入死循环;
当n = 1;的时候 m = n*(n-1)也就是 m = 0;
那么进入下一个循环
现在我们说说第二个循环
你第二个循环无法运行是因为 你的i 值 都没有赋值,没有初始化,所以i会是一个垃圾值;
我们看看判断的 n = n*i ;i是垃圾值一般是很大的正数,然后n*i,n是1 。所以这个判定应该为真。
然后你的{} 这个中括号 具体是漏了还是你就这样写。如果你是漏了还好。
要记得中括号是对称的 有一半就要有另外一半。我看你这里是不足的就一半;
循环内的语句块因为是;所以是空语句,那么看 n = k, 可以看出 k= m,那么k = 0; 那么 n = 0
所以如果你代码书写正确并且规范
那么当 n = 1 只会运行一次for 循环。
不为1 就会进入死循环;
所以兄弟好好看视频和书本;
你编写的这段代码问题多多;

gdmao002 发表于 2020-5-10 00:16:20

所以你现在首要问题 不是求出阶层 而是学会for循环 和嵌套循环怎么使用;

苏格拉没有底呀 发表于 2020-5-10 09:39:16

#include<stdio.h>

int Jiecheng();

int main()
{
        int n, i;
        unsigned long long int S=0;
       
        printf("请输入一个整数n(n<=50):");
        scanf("%d", &n);
       
        for(i=1; i<=n; i++){
                S += Jiecheng(i);
        }
       
        printf("%ld\n", S);
        return 0;
}

int Jiecheng(int n){
        int i;
        int sum=1;
       
        for(i=1; i<=n; i++){
                sum *= i;
       }
       return sum;
}
页: [1]
查看完整版本: 求助,无法运行。