转载请标明出处:blog.csdn.net/zhangxingping
遗漏了原文的项目3-2,特此补充。
项目3-2 对项目3-1的帮助系统进行改进
该项目对3-1中的帮助系统进行扩展。增加了针对for,while以及do-while循环的帮助信息。同时,增加了对用户输入的有效性检查。程序一直循环,直到用户输入了有效的菜单选项。其中使用到了do-while循环来完成该功能。一般情况下都是使用do-while循环来处理菜单选择的。因为我们总是希望循环体至少要被执行一次。
步骤
1.复制Help.cpp,生成新的文件,重命名为Help2.cpp。
2.修改显示菜单并等待用户选择的代码:
do
{
cout << "Help on : \n";
cout << " 1.if\n";
cout << " 2. switch\n";
cout << " 3. for\n";
cout << " 4. while\n";
cout << " 5. do-while\n";
cout << "Choose one :";
cin >> choice;
}while(choice < '1' || choice > '5');
3. 在switch语句中增加对for,while以及do-while的帮助信息,如下:
switch(choice)
{
case '1':
{
cout << "The if:\n\n";
cout << "if(condition) statement;\n";
cout << "else statement;";
break;
}
case '2':
{
cout << "The switch:\n\n";
cout << "switch(expression)\n";
cout << " case constant:\n";
cout << " statement sequence\n";
cout << " break;\n";
cout << " //...;";
break;
}
case '3':
{
cout << "The for:\n\n";
cout << "for(init, condition, increment)\n";
cout << " statement;\n";
break;
}
case '4':
{
cout << "The while:\n\n";
cout << "while(condition) statement;\n";
break;
}
case '5':
{
cout << "The do-while:\n\n";
cout << "do\n";
cout << "{\n";
cout << " statement;\n";
cout << "}while(condition);\n";
break;
}
}
注意:在这个版本中没有default分支。由于在菜单选择的循环中已经能够确保用户键入的是有效的选择了,因此就没有必要增加对无效输入的处理了。
4.完整的程序如下:
/*
项目 3-2
使用do-while循环来处理菜单选择,对原来的帮助系统进行改进
*/
int main()
{
char choice;
do
{
cout << "Help on : \n";
cout << " 1.if\n";
cout << " 2. switch\n";
cout << " 3. for\n";
cout << " 4. while\n";
cout << " 5. do-while\n";
cout << "Choose one :";
cin >> choice;
}while(choice < '1' || choice > '5');
cout << "\n";
switch(choice)
{
case '1':
{
cout << "The if:\n\n";
cout << "if(condition) statement;\n";
cout << "else statement;";
break;
}
case '2':
{
cout << "The switch:\n\n";
cout << "switch(expression)\n";
cout << " case constant:\n";
cout << " statement sequence\n";
cout << " break;\n";
cout << " //...;";
break;
}
case '3':
{
cout << "The for:\n\n";
cout << "for(init, condition, increment)\n";
cout << " statement;\n";
break;
}
case '4':
{
cout << "The while:\n\n";
cout << "while(condition) statement;\n";
break;
}
case '5':
{
cout << "The do-while:\n\n";
cout << "do\n";
cout << "{\n";
cout << " statement;\n";
cout << "}while(condition);\n";
break;
}
}
return 0;
}
专家答疑:
问:前面的程序中看到过在for循环的初始化部分声明变量,请问,这种控制变量是否可以在for循环之外的其他地方进行声明?
答:是的,可以的。在C++中,我们是可以在if的条件表达式,switch的条件表达式,while循环的条件表达式以及for循环的初始化部分进行变量声明的。在这些地方声明的变量的作用域仅限于由这些语句控制的代码块中。
之前我们看到过在for循环中声明变量。下面就是一个在if语句的条件表达式中声明变量的示例:
if ( int x = 20)
{
x = x- y;
if ( x > 10 )
{
y = 0;
}
}
这里在if的条件表达式中声明了变量x并给其赋值为20。既然这是一个真值,if语句中的目标代码就会被执行。由于在if语句中声明的变量的作用域只局限于if语句的代码块中,因此,在if语句的代码块之外是不能感知到变量x的。
正如我们在讨论for循环的时候提到的:当我们在一个控制语句中声明变量的时候,改变量的作用域是仅限于该控制语句的代码块中还是在其之后也可以使用取决于编译器。关于这点在编码前我们应该根据自己的编译器进行确认。当然,ANSI/ISO C++规定其作用域仅局限于该控制语句的代码块中。
大部分的程程序员不会在包含for在内的控制语句中声明变量。实际上,在除了for之外的其他控制语句中声明变量是一种有争议的做法,通常被认为是一种不好的编程风格。
按照原文的结构,本文的前一节应该为:http://blog.csdn.net/zhangxingping/article/details/5398734
按照原文的结构,本文的后一节应该为:http://blog.csdn.net/zhangxingping/article/details/5486960