C++ C++;函数,按引用传递

C++ C++;函数,按引用传递,c++,function,pass-by-reference,C++,Function,Pass By Reference,我在调用函数时传递参数作为引用时遇到问题。 我们将按照以下说明构建一个程序: 通过编写以下函数的函数定义和函数原型,完成上述程序: 显示菜单 此函数接受num1和num2作为引用传递的参数,并返回一个字符作为输出。该功能显示菜单,并接受以下用户给定的输入: A num1 B num1 num2 Q checkeven 如果参数为偶数,则此函数返回TRUE。否则,函数返回FALSE divisible 如果第一个参数num1可被第二个参数num2整除,则此函数返回TRUE 到目前为止,这是我的代

我在调用函数时传递参数作为引用时遇到问题。 我们将按照以下说明构建一个程序:

通过编写以下函数的函数定义和函数原型,完成上述程序:

显示菜单
此函数接受num1和num2作为引用传递的参数,并返回一个字符作为输出。该功能显示菜单,并接受以下用户给定的输入:

A num1
B num1 num2
Q
checkeven
如果参数为偶数,则此函数返回TRUE。否则,函数返回FALSE

divisible
如果第一个参数num1可被第二个参数num2整除,则此函数返回TRUE

到目前为止,这是我的代码,在传递参数时出错

#include <iostream>

using namespace std;
int num1, num2 = 0;
char displaymenu(int num1, int num2);
bool checkeven (int num1);
bool divisible (int num1, int num2);

int main(){
    int num1, num2 = 0;
    char choice;
    do{
       choice = displaymenu(num1,num2);    
       if (choice == 'A'){
           if (checkeven(num1))
               cout << num1 << " is even." << endl;
           else 
                cout << num1 << " is odd." << endl;
       }          
       else if (choice == 'B'){
          if (divisible(num1, num2))
              cout << num1 << " is divisible by " << num2 << endl;
          else
              cout << num1 << " is not divisible by " << num2 << endl;
       }
       else if (choice == 'Q')
            cout << "Bye!" << endl;
       else 
            cout << "Illegal input" << endl;
       
    }while (choice != 'Q');
    return 0;
}

char displaymenu(int &num1 = num1, int &num2 = num2){
    char choice;
    cout << '+' << "______________________________" << '+' <<endl;
    cout << '|'<<"Choose an option: " <<"            |"<<endl; 
    cout << '|'<<"    A: Check if even          |" <<endl;
    cout << '|'<<"    B: Check if divisible     |" <<endl;
    cout << '|'<<"    Q: Quit                   |" <<endl;
    cout << '+' << "______________________________" << '+' <<endl;
    cout << "   Reply: ";
    cin>> choice>> num1>> num2;
    return choice;
    }

bool checkeven(int num1){
    if (num1 % 2 == 0)
        return true;
    else
        return false;
    } 

bool divisible(int num1, int num2){
    
    if (num1 % num2 == 0)
        return true;
    else
        return false;
    }
#包括
使用名称空间std;
int num1,num2=0;
字符显示菜单(int num1,int num2);
布尔校验偶(整数m1);
布尔可除(int num1,int num2);
int main(){
int num1,num2=0;
字符选择;
做{
选择=显示菜单(num1,num2);
如果(选项=='A'){
if(校验偶数(num1))

cout我不会用一个完整的答案来回答(你可以自由地改进你的问题,以便以后得到更好的答案),但是关于问题的标题,这里有一些提示

你的声明

char displaymenu(int num1, int num2);
你的定义是什么

char displaymenu(int &num1 = num1, int &num2 = num2)
应具有相同的签名。若要传递引用,请将声明更改为

char displaymenu(int &num1, int &num2);

此外,由于通过引用传输值,因此应使用命名空间std;
删除
下的全局变量
int num1,num2=0;
。不再需要这些变量。然后,通过删除(不工作)来修复
显示菜单
函数定义标准值赋值。在那之后,至少编译器应该接受你的代码,只是当你执行它时,它在某些情况下不会真正工作。

代码中有这么多错误,我不知道从哪里开始。主函数不应该被更改-顺便问一下,这是一个家庭作业吗?你会得到什么错误?请回答请按照编译器的提示,使用调试器,然后返回特定问题。好的,谢谢,稍候再试