Switch 语句 - 嵌套函数 - C++
Switch Statement - Nested Functions - C++
我想要一个名为 "userPrompt" 的函数,它要求用户输入一个名为 "choose" 的整数值,这样之后我就可以使用 switch 语句了。
但它不起作用它说:"choose" 未申报。
我想它会先启动主函数,在其中第一个命令将初始化 userPrompt 函数。然后感谢 userPrompt 我将有一个选择值,以便开关可以工作。
那么这段代码有什么问题呢?
如何使用嵌套函数?(我希望它是这样调用的)
我的代码顺序错了吗?
任何帮助将不胜感激。
userPrompt(){
int choose;
cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;
cin >> choose;
}
int main()
{
userPrompt();
switch(choose){
case 1
getGrade();
userPrompt();
break;
case 2
int average;
getGrade();
average = total/counter;
cout << average;
break;
case 3
getGrade();
cout << total;
break;
case 4
cout << "Thanks for Trying" << endl;
return 0;
system("pause");
break;
default
cout << "Please Choose A Valid Option ! : " << endl;
validOption();
}
}
您忘记将 colon
放入您的 case
并且您还需要 return choose
.
case 1:
试试这个:
int userPrompt(){
int choose;
cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;
cin >> choose;
return choose;
}
int main()
{
int choose = userPrompt();
switch(choose){
case 1:
getGrade();
userPrompt();
break;
case 2:
int average;
getGrade();
average = total/counter;
cout << average;
break;
case 3:
getGrade();
cout << total;
break;
case 4:
cout << "Thanks for Trying" << endl;
return 0;
system("pause");
break;
default:
cout << "Please Choose A Valid Option ! : " << endl;
validOption();
}
}
将代码更改为:
int userPrompt(){ //--> changed into a function returning the choice
int choose;
cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;
cin >> choose;
return choose;
}
int main()
{
//--> declare choose in main and assign a value using the function call
int choose = userPrompt();
switch(choose){
case 1:
getGrade();
userPrompt();
break;
case 2:
int average;
getGrade();
average = total/counter;
cout << average;
break;
case 3:
getGrade();
cout << total;
break;
case 4:
cout << "Thanks for Trying" << endl;
return 0;
system("pause");
break;
default
cout << "Please Choose A Valid Option ! : " << endl;
validOption();
}
}
简单的错误。把冒号放在 case 1:
这样的情况下
`首先初始化选择并尝试。
int choose = o;
C++ 使用 "scope" 转换成 "visibility" 变量。您的 userPrompt() 函数的 "choose" 变量仅在 userPrompt() 函数的范围内 "visible"(触手可及)。
因此您可以将 userPrompt() 函数声明为
int userPrompt() // Returns the user choice
{
... // your existing code here
return choose;
}
然后在 main() 中你会做这样的事情:
int main()
{
int choice = userPrompt();
switch(choice)
...
在 C++ 中,每个函数都有一个 return 类型。这意味着它将 return 某些东西或 return 无效(即 return 什么都没有)。在你的程序中 userPrompt
没有 return 类型既没有 void 也没有任何其他 return 类型因此这部分是你程序中的第一个错误。
下一个错误是,在 switch 语句中的每个 case 标签之后,该标签后面必须跟一个冒号 ':'
我想要一个名为 "userPrompt" 的函数,它要求用户输入一个名为 "choose" 的整数值,这样之后我就可以使用 switch 语句了。
但它不起作用它说:"choose" 未申报。
我想它会先启动主函数,在其中第一个命令将初始化 userPrompt 函数。然后感谢 userPrompt 我将有一个选择值,以便开关可以工作。
那么这段代码有什么问题呢?
如何使用嵌套函数?(我希望它是这样调用的)
我的代码顺序错了吗?
任何帮助将不胜感激。
userPrompt(){
int choose;
cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;
cin >> choose;
}
int main()
{
userPrompt();
switch(choose){
case 1
getGrade();
userPrompt();
break;
case 2
int average;
getGrade();
average = total/counter;
cout << average;
break;
case 3
getGrade();
cout << total;
break;
case 4
cout << "Thanks for Trying" << endl;
return 0;
system("pause");
break;
default
cout << "Please Choose A Valid Option ! : " << endl;
validOption();
}
}
您忘记将 colon
放入您的 case
并且您还需要 return choose
.
case 1:
试试这个:
int userPrompt(){
int choose;
cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;
cin >> choose;
return choose;
}
int main()
{
int choose = userPrompt();
switch(choose){
case 1:
getGrade();
userPrompt();
break;
case 2:
int average;
getGrade();
average = total/counter;
cout << average;
break;
case 3:
getGrade();
cout << total;
break;
case 4:
cout << "Thanks for Trying" << endl;
return 0;
system("pause");
break;
default:
cout << "Please Choose A Valid Option ! : " << endl;
validOption();
}
}
将代码更改为:
int userPrompt(){ //--> changed into a function returning the choice
int choose;
cout << " Please Choose An Option : " << endl;
cout << " Type 1 to Add new grades : " << endl;
cout << " Type 2 to Calculate the average grades : " << endl;
cout << " Type 3 to Calculate the total grades : " << endl;
cout << " Type 4 to Exit : " << endl;
cin >> choose;
return choose;
}
int main()
{
//--> declare choose in main and assign a value using the function call
int choose = userPrompt();
switch(choose){
case 1:
getGrade();
userPrompt();
break;
case 2:
int average;
getGrade();
average = total/counter;
cout << average;
break;
case 3:
getGrade();
cout << total;
break;
case 4:
cout << "Thanks for Trying" << endl;
return 0;
system("pause");
break;
default
cout << "Please Choose A Valid Option ! : " << endl;
validOption();
}
}
简单的错误。把冒号放在 case 1:
这样的情况下
`首先初始化选择并尝试。
int choose = o;
C++ 使用 "scope" 转换成 "visibility" 变量。您的 userPrompt() 函数的 "choose" 变量仅在 userPrompt() 函数的范围内 "visible"(触手可及)。
因此您可以将 userPrompt() 函数声明为
int userPrompt() // Returns the user choice
{
... // your existing code here
return choose;
}
然后在 main() 中你会做这样的事情:
int main()
{
int choice = userPrompt();
switch(choice)
...
在 C++ 中,每个函数都有一个 return 类型。这意味着它将 return 某些东西或 return 无效(即 return 什么都没有)。在你的程序中 userPrompt
没有 return 类型既没有 void 也没有任何其他 return 类型因此这部分是你程序中的第一个错误。
下一个错误是,在 switch 语句中的每个 case 标签之后,该标签后面必须跟一个冒号 ':'