该程序应使用星号输出不同长度的垂直和水平线。星号的数量和行进方向由用户在输入语句中确定。必须使用switch语句创建它。这是我当前的代码:
int main() {
// Variables
int length = 1;
char direct;
// User input choice
if (length >= 1 && length <= 20) {
cout << "\nEnter the line length and direction: ";
cin >> length >> direct;
}
// If user input incorrect
else {
system("pause");
}
// Switch cases for horizontal or vertical
switch (direct) {
case 'h': for (int count = 0; count <= length; count++) {
cout << "*";
break;
}
case 'H': for (int count = 0; count <= length; count++) {
cout << "*";
break;
}
case 'V': for (int count = 0; count <= length; count++) {
cout << "*" << "\n" << endl;
break;
}
case 'v': for (int count = 0; count <= length; count++) {
cout << "*" << "\n" << endl;
break;
}
default: cout << "Illegal comand" << endl;
}
system("pasue");
}
这是我的水平选择输出语句之一:
Enter the line length and direction: 4 h
***
*
Illegal Command
这是我的垂直选择输出语句之一:
Enter the line length and direction: 4 v
*
Illegal Command
这就是我想要的水平外观:
Enter the line length and direction: 4 h
****
这就是我想要的垂直的样子:
Enter the line length and direction: 4 v
*
*
*
*
为什么星号不能正确输出?为什么每次都会输出“非法命令”?还以为我应该注意,我是C ++的初学者。谢谢!
答案 0 :(得分:3)
在每种切换条件下,尝试将break关键字排除在花括号之外。
执行此操作
case 'V': for (int count = 0; count <= length; count++) {
cout << "*" << "\n" << endl;
}
break;
代替
case 'V': for (int count = 0; count <= length; count++) {
cout << "*" << "\n" << endl;
break;
}
答案 1 :(得分:2)
您在错误的位置放置了break;
语句。
case 'h': for (int count = 0; count <= length; count++) {
cout << "*";
break;
}
需要成为;
case 'h': for (int count = 0; count <= length; count++) {
cout << "*";
}
break;
请注意,h
和H
的逻辑相同。您可以将它们结合起来。
case 'h':
case 'H':
for (int count = 0; count <= length; count++) {
cout << "*";
}
break;
您可以类似地组合案例v
和V
。
您仍然可以通过创建辅助功能来写水平线和垂直线来对其进行改进。
case 'h':
case 'H':
writeHorizontalLine(length);
break;
case 'v':
case 'V':
writeVerticalLine(length);
break;
其中
void writeHorizontalLine(int length)
{
for (int count = 0; count <= length; count++)
{
cout << "*";
}
cout << endl;
}
void writeHorizontalLine(int length)
{
for (int count = 0; count <= length; count++)
{
cout << "*" << endl;
}
}
答案 2 :(得分:1)
在for循环外编写break语句。如果您在for循环内编写break语句,以防万一,那么它就会脱离for循环。遇到非法命令是因为您没有在for循环外使用break