调用函数时,我将参数作为参考传递出来。 我们将按照以下指示构建一个程序:
通过编写以下函数的函数定义和函数原型来完成上述程序:
displaymenu
此函数接受num1和num2作为引用传递的参数,并返回一个字符作为输出。该功能显示菜单并接受以下用户给定的输入:A num1 B num1 num2 Q
checkeven
如果参数是偶数,则此函数返回TRUE。否则函数返回FALSE。整除,则此函数返回TRUE
divisible
如果第一个参数num1可被第二个参数num2。
到目前为止,这是我的代码并且在传递参数时遇到错误。
#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;
}
答案 0 :(得分:0)
我不打算用一个完整的解决方案回答(你可以随意改进你的问题,以便以后得到更好的答案),但关于问题标题,这里有一些提示。
您的声明
char displaymenu(int num1, int num2);
和你的定义
char displaymenu(int &num1 = num1, int &num2 = num2)
应具有相同的签名。要传递引用,请将声明更改为
char displaymenu(int &num1, int &num2);
此外,由于您通过引用传输值,因此您应该删除int num1, num2 = 0;
下方的全局变量using namespace std;
。它们不再需要了。然后,通过删除(不工作)标准值赋值来修复displaymenu
函数定义。在那之后,至少编译器应该接受你的代码,只是在你执行它时它不会真的适用于某些情况。