救命,我想用bool类型函数判断输入的数是否属于0—20,并且输出n*n,n*n*n,但是只能输出error。

#include
using namespace std;
int main() {
bool factor(int n,int &a, int &b);
int number, a, b;
cout << "please input a number:";
cin >> number;
bool error = factor(number, a, b);
if (error)
cout << "error!" << endl;
else
{
cout << "the number is:"<<number << endl;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
}

}
bool factor(int n, int &a, int &b) {
if (a > 20 || a < 0)
return true;
a = n * n;
b = n * n * n;
return false;
}

细节决定成败

#include
using namespace std;
int main() {
bool factor(int n,int &a, int &b);
int number, a, b;
cout << "please input a number:";
cin >> number;
bool error = factor(number, a, b);
if (error)
cout << "error!" << endl;
else
{
cout << "the number is:"<<number << endl;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
}

}
bool factor(int n, int &a, int &b) {
if (a > 20 && a < 0)
return true;
a = n * n;
b = n * n * n;
return false;
}

img

因为你函数里之前判断的是a 而不是输入的number,所以不对

#include<iostream>
using namespace std;
int main()
{
    bool factor(int n,int &a, int &b);
    int number, a=1, b=1;
    cout << "please input a number:";
    cin >> number;
    bool error = factor(number, a, b);
    if (error)
        cout << "error!" << endl;
    else
    {
        cout << "the number is:"<<number << endl;
        cout << "a=" << a << endl;
        cout << "b=" << b << endl;
    }

}
bool factor(int n, int &a, int &b)
{
    if (n > 20 || n < 0)
        return true;
    a = n * n;
    b = n * n * n;
    return false;
}


img