c.programing,代码剂量工作

时间:2016-12-14 23:20:58

标签: c runtime-error

我的程序是检查一个数字是否是一个完美的数字 我有一个运行时错误,请帮忙 如果重要的话,我正在使用记事本++

#include <stdio.h>

int main(void)
{
    int input=0;
    int i=0;
    int counter=0;

    printf("enter a number \n");
    scanf("%d", &input);
    for (i=0;i<=input;i++)
    {
        if (input%i==0)
        {
            counter = counter+i;
        }
    }
    if (input==counter)
    {
        printf("%d in a perfect number\n", counter);
    }
    else
    {
        printf("%d is not a perfect number\n", input);
    }
    system("pause");
    return 0;
}

2 个答案:

答案 0 :(得分:5)

input % i除以input时,

i会返回余数。但是,您无法将数字除以0,因此input % 0会导致未定义的行为。

将您的循环更改为从1而不是0开始。此外,您应该在 i到达number之前停止,因为该数字始终是其自身的除数,但在加总时不应包含在总和中除数(一个数字怎么可能等于它自身和所有除数的总和?)。

for (i = 1; i < number; i++)

答案 1 :(得分:1)

您已将input%i == 0i初始化为0。这在第一次迭代时基本上除以0,这可能是错误的来源。