鱼C论坛

 找回密码
 立即注册
查看: 1415|回复: 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
不要听他的
您提供的代码有一个小小的错误,导致输出出现异常。以下是您的代码:
#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) // 这里的判断应该放在for循环之后
            printf("no such numbers");
    }
    return 0;
}

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

以下是修改后的代码:
#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;
}

有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-9 17:31:55 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2023-4-9 17:37:54 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2023-4-9 17:51:29 | 显示全部楼层    本楼为最佳答案   
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2023-4-9 18:05:46 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 15:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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