鱼C论坛

 找回密码
 立即注册
查看: 3071|回复: 8

[已解决]求助,无法运行。

[复制链接]
发表于 2020-5-9 23:28:30 | 显示全部楼层 |阅读模式
2鱼币

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;
最佳答案
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-9 23:29:49 | 显示全部楼层
代码也不全啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-9 23:32:36 | 显示全部楼层
上图
20200509.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-9 23:33:09 | 显示全部楼层
求助啊求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-9 23:56:12 | 显示全部楼层

题目发在下面了,求解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 就会进入死循环;
所以兄弟好好看视频和书本;
你编写的这段代码问题多多;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-10 00:16:20 | 显示全部楼层
所以你现在首要问题 不是求出阶层 而是学会for循环 和嵌套循环怎么使用;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
 }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 19:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表