c++开关不工作超过2种情况
C++ switch not working with more than 2 cases
我正在学习c++,很抱歉有新手问题。
我在做S. Prata书里的练习。我现在的版本是6.4。
这是我写的代码:
#include <iostream>
using namespace std;
void showmenu();
void request();
const int strsize = 20;
const int templeSize = 5;
struct temple {
char name[strsize];
char job[strsize];
char psd[strsize];
int preference;
};
int main(){
temple members[templeSize] = {
{"Alan", "spy", "Kret", 0},
{"Bruce", "engi", "Mech", 2},
{"Zac", "engi", "Robot", 0},
{"Kevin", "teacher", "Kid", 1},
{"Maverick", "spy", "Shadow", 2}
};
char choice;
showmenu();
request();
cin >> choice;
while (choice != 'q'){
switch(choice){
case 'a' : for(int i; i< templeSize; i++)
cout << members[i].name << endl;
break;
case 'b' : for(int i; i< templeSize; i++)
cout << members[i].job << endl;
break;
case 'c' : for(int i; i< templeSize; i++)
cout << members[i].psd << endl;
break;
case 'd' : for(int i; i < templeSize;i++){
switch(members[i].preference){
case 0: cout << members[i].name; break;
case 1: cout << members[i].job; break;
case 2: cout << members[i].psd; break;
}
}
default : request();
}
showmenu();
cin >> choice;
}
cout << "nBye!n";
return 0;
}
void request(){
cout << "Choose one option:n";
}
void showmenu(){
cout << "a. names b. jobsn"
"c. psds d. preferencesn"
"q. Quitn";
}
我不知道那有什么问题。代码正在编译(我使用Code::块),但仅适用于'a'和'b'的情况。当我输入"c"或"d"时,它只是再次显示菜单。如果我多次选择a/b也一样
我通过谷歌找到了其他解决方案,但我真的想知道我的代码有什么问题。
i
未在任何case语句for循环中初始化
在switch语句之外调用showmenu()。因此,无论输入什么,您都将离开开关并调用函数。
switch(choice){
...
}
showmenu();
...
相关文章:
- C++:我的开关盒循环转到第一种情况
- 两种情况下的输出不应该相同吗?
- 为什么'const'在这两种情况下的行为不同?
- 在哪种情况下,C++会在编译时进行数组边界检查?
- free():仅在一种情况下指针无效
- 程序在开关中执行第二种情况后崩溃
- 在两种情况下,铸造的工作方式不同
- 如果ConstexPR似乎仅在两种情况有效时起作用
- 为什么在一种情况下,我会收到带有字符串文字的已弃用转换警告,而在另一种情况下却没有?
- switch 语句中的输入错误 如何循环回第一种情况?C++
- 在游戏地图上选择100种情况的最佳方法(MFC,CPoint)
- 我如何仅在一种情况下或某些情况下专业攻击效果
- 在哪种情况下,可以在堆栈上分配
- 空格很重要的另一种情况(也许?
- StrcMP的两种情况
- 哪种情况更有效
- 我的代码将不会显示为每种情况C 的代码
- 程序在没有调试符号的情况下崩溃,运行良好(两种情况下都没有优化或任何内容)
- 在每种情况下都执行“std::set”对元素进行排序
- 为什么模板参数只能在一种情况下推导