鱼C论坛

 找回密码
 立即注册
查看: 591|回复: 2

[已解决]帮忙看看

[复制链接]
发表于 2023-11-14 13:15:06 | 显示全部楼层 |阅读模式
10鱼币
#include <stdio.h>

int main()
{
   int m,n,s;
        for (m=2;m<1000;m++)
        {
                s=0;
                for(n=1;n<=m;n++)
                if(m%n==0)
                                s+=n;
       
                        if(s==m) printf("%d",m);
        }
       
       
        return 0;

}
题目是求出1~1000的自然数中的所有完数(因子和等于该数本身的数),如6=1+2+3
请问我的程序错在哪里啊,为什么没有输出呢?
最佳答案
2023-11-14 13:15:07
你的程序中存在一些小错误。首先,你的程序没有在输出完数时打印换行符,导致输出结果会在同一行上。其次,你的程序没有正确计算完数,因为你的循环条件和条件判断有误。以下是你需要修改的程序:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int m, n, s;
  5.     for (m = 2; m <= 1000; m++)
  6.     {
  7.         s = 0;
  8.         for (n = 1; n < m; n++)
  9.         {
  10.             if (m % n == 0)
  11.             {
  12.                 s += n;
  13.             }
  14.         }

  15.         if (s == m)
  16.         {
  17.             printf("%d ", m); // 输出完数
  18.         }
  19.     }

  20.     return 0;
  21. }
复制代码


在修改后的程序中,我将外层循环的条件改为 m <= 1000 ,这样可以包括1000在内。同时,内层循环的条件改为 n < m ,因为我们不需要将m本身计算在内。另外,我在输出完数时添加了一个空格,以便在结果中进行分隔。

最佳答案

查看完整内容

你的程序中存在一些小错误。首先,你的程序没有在输出完数时打印换行符,导致输出结果会在同一行上。其次,你的程序没有正确计算完数,因为你的循环条件和条件判断有误。以下是你需要修改的程序: 在修改后的程序中,我将外层循环的条件改为 m
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-14 13:15:07 | 显示全部楼层    本楼为最佳答案   
你的程序中存在一些小错误。首先,你的程序没有在输出完数时打印换行符,导致输出结果会在同一行上。其次,你的程序没有正确计算完数,因为你的循环条件和条件判断有误。以下是你需要修改的程序:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int m, n, s;
  5.     for (m = 2; m <= 1000; m++)
  6.     {
  7.         s = 0;
  8.         for (n = 1; n < m; n++)
  9.         {
  10.             if (m % n == 0)
  11.             {
  12.                 s += n;
  13.             }
  14.         }

  15.         if (s == m)
  16.         {
  17.             printf("%d ", m); // 输出完数
  18.         }
  19.     }

  20.     return 0;
  21. }
复制代码


在修改后的程序中,我将外层循环的条件改为 m <= 1000 ,这样可以包括1000在内。同时,内层循环的条件改为 n < m ,因为我们不需要将m本身计算在内。另外,我在输出完数时添加了一个空格,以便在结果中进行分隔。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-14 13:29:33 | 显示全部楼层
isdkz 发表于 2023-11-14 13:15
你的程序中存在一些小错误。首先,你的程序没有在输出完数时打印换行符,导致输出结果会在同一行上。其次, ...

你好,这个题只能在两个if语句里面改动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-26 02:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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