“C++ 编程入门班” 练习三
外观
本课学习目标
- 完成所有基本程序结构(顺序、分支、循环)语句的学习
- switch语句
- 循环结构中break和continue语句的使用
- 复习巩固各程序结构的语句
- 进一步熟悉同类结构中不同语句之间的区别(例如switch语句和 if语句、if-else语句的区别,while循环和do-while循环的区别)
- 结构的嵌套
- 使用流程图
预习部分
预习说明
自行输入【例3.1】,编辑至运行通过。
自行输入【例3.4】,编辑至运行通过。 注意观察有、无 break语句时,运行次数的区别。
switch语句
switch(开关)语句提供了一种比较简洁的方式来处理多分支。
switch语句的语法格式:
switch(表达式)
{
case 常量:
分支1处理语句;
break;
case 2:
分支2处理语句;
break;
case 3:
分支3处理语句;
break;
……
……
default:
其它情况处理语句;
}
【例3.1】使用switch语句转换数字为星期名称
#include <iostream>
using namespace std;
int main()
{
int weekday = 0;
cin >> weekday; //接收用户输入
switch(weekday)
{
case 1:
cout << "星期一" <<endl;
break;
case 2:
cout << "星期二" <<endl;
break;
case 3:
cout << "星期三" <<endl;
break;
case 4:
cout << "星期四" <<endl;
break;
case 5:
cout << "星期五" <<endl;
break;
case 6:
cout << "星期六" <<endl;
break;
case 7:
cout << "星期天" <<endl;
break;
default:
cout << "请输入正确的数字!" <<endl;
}
return 0;
}
可以对比【例3.2】、【例3.3】来理解switch的优点。
【例3.2】使用嵌套的if-else语句
#include <iostream>
using namespace std;
int main()
{
int weekday = 0;
cin >> weekday; //接收用户输入
if(weekday == 1)
cout << "星期一" <<endl;
else if(weekday == 2)
cout << "星期二" <<endl;
else if(weekday == 3)
cout << "星期三" <<endl;
else if(weekday == 4)
cout << "星期四" <<endl;
else if(weekday == 5)
cout << "星期五" <<endl;
else if(weekday == 6)
cout << "星期六" <<endl;
else if(weekday == 7)
cout << "星期天" <<endl;
else
cout << "请输入正确的数字!" <<endl;
return 0;
}
【例3.2】使用多重嵌套的if-else语句,即使层层缩进,也不易阅读,结构过于复杂。
【例3.3】使用无嵌套的if语句
#include <iostream>
using namespace std;
int main()
{
int weekday = 0;
cin >> weekday; //接收用户输入
if(weekday == 1)
cout << "星期一" <<endl;
if(weekday == 2)
cout << "星期二" <<endl;
if(weekday == 3)
cout << "星期三" <<endl;
if(weekday == 4)
cout << "星期四" <<endl;
if(weekday == 5)
cout << "星期五" <<endl;
if(weekday == 6)
cout << "星期六" <<endl;
if(weekday == 7)
cout << "星期天" <<endl;
if(weekday < 1 || weekday > 7) // ||表示“或”
cout << "请输入正确的数字!" <<endl;
return 0;
}
【例3.3】使用无嵌套的if语句,相比【例3.2】结构简洁,但是每个分支都要执行,增加了程序运行时间。
break语句
break 语句用于跳出循环,如果已经满足某个条件,或者以及达到运行目的,可以用break提前停止当前循环。
【例3.4】质数的判断
#include <iostream>
using namespace std;
int main()
{
int n =0;
int count=0;//
int flag = 1; //1: 是质数 0:不是质数
cout << "请输入一个大于2的整数:" <<endl;
cin >> n;
for(int i=2;i<n;i++)
{
count++;
if(n % i == 0)
{
flag = 0;
break; //只要有一个数能被整除,就可以确定不是质数了
}
}
cout << "运行了" << count << "次判断" <<endl;
if(flag == 1)
cout << n << "是质数" <<endl;
else
cout << n << "不是质数" <<endl;
return 0;
}
可以把第18行的break注释或删除,比较一下运行次数的不同。
课堂练习说明
注明“需要自行输入”的,需要自己打字,完成代码编写。
可以先复制代码到编辑器,然后设置为注释,再看着打字。
使用桌面上的极速浏览器(最新版本的Chrome 浏览器,不是360浏览器)可以避免把行号一起复制
如果使用其它浏览器,复制后带上了行号,可以按住 Alt 竖选文本,快速删除行号
课堂练习
实例:数字菜单
【例3.5】使用do-while嵌套switch实现的数字菜单
#include <iostream>
using namespace std;
int main()
{
//接收用户选择
int choice = 0;
do{
//输出菜单
cout << "1 2 3 4 5 0" <<endl;
cout << "请选择需要的操作:" <<endl;
cin >> choice ;
switch(choice)
{
case 1:
cout << choice <<endl;
break;
case 2:
cout << choice <<endl;
break;
case 3:
cout << choice <<endl;
break;
case 4:
cout << choice <<endl;
break;
case 5:
cout << choice <<endl;
break;
case 0:
cout << choice <<endl;
break;
default:
cout << "请输入正确的数字!" <<endl;
}
} while(choice!=0);
cout << "退出主程序!" <<endl;
return 0;
}
continue 语句
【例3.6】2层for循环,查找1-100内的质数
#include <iostream>
using namespace std;
int main()
{
int n =0;
int count=0;// (内层)循环计数
cout << "查找1-100内的质数" <<endl;
for(int n=2;n<=100;n++)
{
int flag = 1; //1: 是质数 0:不是质数
for(int i=2;i<n;i++)
{
count++;
if(n % i == 0)
{
flag = 0;
break;
}
}
if(flag == 0)
continue;
cout << n << "是质数" <<endl;
}
cout << "运行了" << count << "次判断" <<endl;
return 0;
}
基本程序结构复习
基本程序结构复习: 流程图演示
使用ProcessOn绘制基本程序结构: https://www.processon.com/