-2

试图找出我的代码有什么问题,请有人帮助我。该代码应该计算并打印 1 到 1000 之间的完美数字以及数字的因数。我正在尝试调用完美(数字)函数,但不断弹出错误“需要左值作为赋值的左操作数”。

#include <stdio.h>

int perfect(int number);

int main(void){

    printf("The perfect numbers between 1 and 1000 are\n:");

    for (int number = 1; number <=1000; number++){
        perfect(number);
        if (perfect(number) = 1){
            printf("%d is a perfect number; ", number);
            printf("It's factors are = ");
                for (int i = 1; i <= number; i++){ //might need to change i<number
                    if (number % i == 0){
                        printf("%d", i);
                    }
                }
        }
    }
    return 0;
}

int perfect(int number){

    int sum;

    for(int number = 1;number <= 1000; number++){
        sum = 0;

        for (int i = 1; i <= number/2; i++){
            if (number % i == 0){
                sum = sum + i;
            }
        }

        if (sum == number){
           return 1;
        }
        else {
            return 0;
        }
    }

}
4

1 回答 1

2

在 C(以及许多借用其语法的其他语言)中,=是赋值运算符,而不是相等比较运算符。更改if (perfect(number) = 1)if (perfect(number) == 1)

于 2019-01-28T05:19:20.640 回答