鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 5

[已解决]c语言作业求助

[复制链接]
发表于 2023-4-9 17:24:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 mo_on 于 2023-4-9 18:13 编辑

在屏幕上输出m以内所有满足要求的数。要求:该数除了1和本身之外所有因子之和为n,如果没有满足条件的数则输出"no such numbers"
【输入形式】
m n
【输出形式】

除了1和本身之外所有因子之和为n的数



"no such numbers"

#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,n,i,j,s,k=0;
    scanf("%d%d",&m,&n);
    for(i=3;i<=m;i++)
{
        s=0;
        j=2;
        for(;j<i;j++)
{
            if(i%j==0)
                s+=j;
}
        if(s==n)
{
        printf("%d ",i);
        k++;
}
        if(k==0)
            printf("no such numbers");
    }
    return 0;
}
不知道哪里错了,希望大神帮助
最佳答案
2023-4-9 17:51:29
不要听他的
您提供的代码有一个小小的错误,导致输出出现异常。以下是您的代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     int m, n, i, j, s, k = 0;
  6.     scanf("%d%d", &m, &n);
  7.     for (i = 3; i <= m; i++)
  8.     {
  9.         s = 0;
  10.         j = 2;
  11.         for (; j < i; j++)
  12.         {
  13.             if (i % j == 0)
  14.                 s += j;
  15.         }
  16.         if (s == n)
  17.         {
  18.             printf("%d ", i);
  19.             k++;
  20.         }
  21.         if (k == 0) // 这里的判断应该放在for循环之后
  22.             printf("no such numbers");
  23.     }
  24.     return 0;
  25. }
复制代码


当不满足条件时,输出"no such numbers"应该只出现一次。在您的代码中,每次循环都会输出一次,而不是在循环结束后只输出一次。因此,将 `if(k==0)` 的判断放到 `for` 循环结束后即可。

以下是修改后的代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     int m, n, i, j, s, k = 0;
  6.     scanf("%d%d", &m, &n);
  7.     for (i = 3; i <= m; i++)
  8.     {
  9.         s = 0;
  10.         j = 2;
  11.         for (; j < i; j++)
  12.         {
  13.             if (i % j == 0)
  14.                 s += j;
  15.         }
  16.         if (s == n)
  17.         {
  18.             printf("%d ", i);
  19.             k++;
  20.         }
  21.     }
  22.     if (k == 0)
  23.         printf("no such numbers");
  24.     return 0;
  25. }
复制代码


有用请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-9 17:31:55 | 显示全部楼层
此帖仅作者可见
小甲鱼最新课程 -> https://ilovefishc.com

使用道具 举报

 楼主| 发表于 2023-4-9 17:37:54 | 显示全部楼层
此帖仅作者可见
小甲鱼最新课程 -> https://ilovefishc.com

使用道具 举报

发表于 2023-4-9 17:51:29 | 显示全部楼层    本楼为最佳答案   
此帖仅作者可见
小甲鱼最新课程 -> https://ilovefishc.com

使用道具 举报

发表于 2023-4-9 18:05:46 | 显示全部楼层
此帖仅作者可见
小甲鱼最新课程 -> https://ilovefishc.com

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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