C++ 在C+中调用布尔函数+;

C++ 在C+中调用布尔函数+;,c++,function,boolean,function-call,perfect-numbers,C++,Function,Boolean,Function Call,Perfect Numbers,这是我的程序,它的目的是显示输入的整数是否是一个完美的数字。需要使用布尔函数,并在主函数中调用它。但是,在运行试用后,没有输出。任何人都可以帮助这个编程新手…提前感谢任何帮助 #include <iostream> using namespace std; bool perfect ( int num ) { int sum = 0, i = 1; while( i < num ) { if ( num % i == 0 ) {

这是我的程序,它的目的是显示输入的整数是否是一个完美的数字。需要使用布尔函数,并在主函数中调用它。但是,在运行试用后,没有输出。任何人都可以帮助这个编程新手…提前感谢任何帮助

#include <iostream>
using namespace std;

bool perfect ( int num )
{
    int sum = 0, i = 1;
    while( i < num ) {
        if ( num % i == 0 ) {
            sum = sum + i;
            i++;
        }
    }

    if ( num == sum )
        return 1 ;
    else
        return 0 ;
}

int main()
{
    int num ;
    cin >> num ;

    if ( perfect ( num ) == 1 )
        cout << " YES " << endl ;
    else
        cout << " NO " << endl ;
}
#包括
使用名称空间std;
布尔完美(整数)
{
整数和=0,i=1;
while(i>num;
if(完美(num)==1)

cout让我们看看当
num==3
i==2
时的循环

int i = 1;
while( i < num ) {
    if ( num % i == 0 ) {
        sum = sum + i;
        i++;
    }
}
我们可以将其优化为:

bool perfect_number(int x) {
    return x == 6 || x == 28 || x == 496 || x == 8128 || x == 33550336;
}

函数
perfect(int)
返回布尔值而不是整数,因此
if(perfect(num))
可以直接使用。
您可以使用函数
perfect()
的返回类型int来使用'if'条件:
if(perfect(num)==1)

您应该使用调试器逐步检查代码,并查看代码与预期的不同之处。解决此类问题的正确工具是调试器。在询问堆栈溢出问题之前,您应该逐行检查代码。有关更多帮助,请阅读。至少,您应该[编辑]您的问题将包括一个重现您的问题的示例,以及您在调试器中所做的观察。感谢您的帮助!我现在了解问题所在…我从未想过这个问题。。。
bool perfect_number(int x) {
    return x == 6 || x == 28 || x == 496 || x == 8128 || x == 33550336;
}