Accelerator01 发表于 2020-11-25 17:16:57

以下代码错在哪

编写判断一个正整数是否“完数”的子数fn,“完数”指的是该数的各因子之和是它自身的整数,如6的因子是1、2、3,而6=1+2+3,故6是完数。
编写主函数调用子函数fn求出x~y的所有“完数”,x,y的值由键盘输入。
#include <stdio.h>
int main()
{
        int fn(int x);
        int x,y;
        printf("input two numbers: ");
        scanf("%d,%d",&x,&y);
        for(;x<=y;x++)
        {
                if(x==fn(x))
                       printf("%5d",x);
        }
        return 0;
}
        int fn(int x)
{
        int i,sum=0;
        for(i=1;i<x;i++)
        {
                if(x%i==0)
                        sum=sum+i;
        }
        return sum;
}

jackz007 发表于 2020-11-25 17:48:04

      为什么要说它是错的?这个代码在我这里完全正常,没有任何问题。

小古比鱼 发表于 2020-11-25 18:34:16

好像没什么错吧……

Accelerator01 发表于 2020-11-26 09:13:11

jackz007 发表于 2020-11-25 17:48
为什么要说它是错的?这个代码在我这里完全正常,没有任何问题。

但是devc运行时没有出现结果啊

jackz007 发表于 2020-11-26 09:41:27

Accelerator01 发表于 2020-11-26 09:13
但是devc运行时没有出现结果啊

      两个输入的数之间要有逗号分隔,两个数的差别要足够大,比如,输入 3 , 10000 试试。

Accelerator01 发表于 2020-11-26 10:00:13

jackz007 发表于 2020-11-26 09:41
两个输入的数之间要有逗号分隔,两个数的差别要足够大,比如,输入 3 , 10000 试试。

我知道错哪了 我输入时分隔数字的逗号用的中文的{:10_266:}

Accelerator01 发表于 2020-11-26 10:00:44

jackz007 发表于 2020-11-26 09:41
两个输入的数之间要有逗号分隔,两个数的差别要足够大,比如,输入 3 , 10000 试试。

谢了谢了 问题解决了
页: [1]
查看完整版本: 以下代码错在哪