c.programing,代码剂量工作

-2 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;
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

input % i分割时返回余数input通过i.但是你不能将数字除以0,因此input % 0导致未定义的行为.

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

for (i = 1; i < number; i++)
Run Code Online (Sandbox Code Playgroud)