第十课 选择结构
【if语句】
程序设计中选择结构可以让程序能根据数据情况作出判断、选择,使程序更“智慧”。C++语言最常见的实现选结构的择语句是if语句,语法格式有2种:
(一)if语句格式1
if ( 条件 ) 语句/复合语句;
或
if ( 条件 )
语句/复合语句;
这个语句的功能为:如果条件成立,就执行后面的语句或复合语句。不成立就什么都不做。
例题10.1:编程实现一个信号灯的控制程序。键盘输入整数N:
l 如果N等于1就画红色圆;
l 如果N等于2就画黄色圆;
l 如果N等于3就画绿色圆。
样例程序10.1 | 图形 |
//prog:样例程序10.1 //author: teacher //2015.10.22
int main() { int N; cin>> N; if(N==1) pen.oo(20,_red); if(N==2) pen.oo(20,_yellow); if(N==3) pen.oo(20,_green); return0; } | 键盘输入:2 的运行结果。
|
新知识:
l “N == 1”读作“N等于1”,功能是判断等式两边的值是否相等。这里“==”是2个“=”号连写,中间不能有空格。
l 特别提醒“N == 1”不是赋值语句“N=1”。
l “if ( N==1) ”读作“如果N等于1”。
拓展知识:
l “N == 1”是一个“逻辑表达式”,是选择结构的“条件”;表达式结果有“成立”和“不成立”2种,也称作“真”和“假”。当N的值是1时,表达式“N == 1”的结果为“成立(真)”;当N的值是其他值时,表达式“N == 1”的结果为“不成立(假)”。
(二)if语句格式2
if (条件 ) 语句1/复合语句1;
else 语句2/复合语句2;
或
if (条件 )
语句1/复合语句1;
else
语句2/复合语句2;
这个语句的功能为:如果条件成立,就执行后面的语句1或复合语句1。不成立就执行else后面的语句2或复合语句2。
例题10.2:编程利用对数字的奇偶性判断,画出下面图形:
样例程序10.2 | 图形 |
//prog:样例程序10.2 //author: teacher //2015.10.22
int main() { for(int i=0; i <100; i++) { if( i%2==0) pen.color( _blue ); else pen.color( _red ); pen.fd(i*2).rt(90); } return0; } |
|
新知识:
l 运算符“%”表示求余数运算,“i%2”就是求i除以2的余数。
l “i%2==0”就是判断i除以2的余数是不是等于0。显然如果i是偶数表达式结果为“真”,i是奇数则表达式结果为“假”。
例题10.3:模拟交通信号灯。下图是一个交通信号灯示意图,现在编程模拟灯的变化:亮5秒钟绿色灯,再亮5秒黄色灯,再亮5秒红色灯,…,周而复始。
样例程序10.3 | 图形 |
//prog:样例程序10.3 //author: teacher //2015.10.22
int main()
{ for(int i=0; i<100; i++) { //画黑色方框 pen.cls().up().fd(60).rr(50,140,_black);
//画绿色灯 if(i%3==0) pen.bk(40).oo(20, _green ); //画黄色灯 if(i%3==1) pen.oo(20, _yellow ); //画红色灯 if(i%3==2) pen.fd(40).oo(20, _red ); wait(5); //显示等待5秒 } return0; } |
|
新知识:
l 上面题目中,要模拟出一个周期是3的变化。变量i表示亮灯先后的序号,编号序列是:0,1,2,3,4,5,6,7,8,…。3个一组则为:(0,1,2)、(3,4,5)、(6,7,8)…。可发现规律:i%3等于0的是绿色灯,i%3等于1的是黄色灯,i%3等于2的是红色灯。
【练习】
一、填空题。根据题目的任务,填空完善程序。
题目 | 程序 |
练习10.1: 键盘读入5个整数,输出个位数是5的数。例如: 输入: 12 35 55 80 25 则输出:35 55 25
| //prog:练习10.1 //author: teacher //2015.10.22
int main() { for(int i=0; i<5; i++) { int x; cin>> x; if( x% ① ==5) cout<<x<<" "; } return0; |
练习10.2: 画一个18边形,边的颜色按编号0,1,2三色周期变化。 | //prog:练习10.2 //author: teacher //2015.10.22
int main()
{ pen.size(10); for(int i=0; i<18; i++) { pen.color( ② ); pen.fd(30).rt(360.0/18); } return0; |
练习10.3: 现在想修改上面练习2的程序,改变颜色的风格。用11号颜色代替0号颜色;用13号颜色代替1号颜色;用10号颜色代替2号颜色。 | //prog:练习10.3 //author: teacher //2015.10.22
int main() { pen.size(10); for(int i=0; i<18; i++) { if( ③ ) pen.color(11); if(i%3==1) pen.color(13); if(i%3==2) pen.color(10); pen.fd(30).rt(360.0/18); } return0; } |
二、编程题。编程画出下面图形。
练习10.4 |
练习10.5 |
练习10.6 输入N,周期输出2、3、4、5,共输出N个数,相邻两个数中间用减号隔开。 例如N输入10时,程序输出: 2-3-4-5-2-3-4-5-2-3 |
【学习目标】
(1) 掌握if语句的格式。
(2) 了解逻辑运算符“==”,知道用逻辑表达式。
(3) 会用if语句判断变量与数字是否相等。
(4) 熟练运用“%”运算判断数的奇偶性;
(5) 能利用if语句和“%”运算,周期执行某些操作。
【拓展学习】
前面介绍了一个特殊的逻辑运算符:“==”,它的意思是判断运算符左右两边的值是否相等,结果是“成立”或“不成立”,也称“真”或“假”。比如:“1+2==3”为真,“3==2”为假。下表列出了其它一些常见的逻辑运算符,供大家学习。
运算符 | 意思 | 举例 |
== | 等于 | 1+2 == 5-2 为真 1+2 == 2 为假 |
!= | 不等于 | 3 != 4 为真 3+1 != 4 为假 |
> | 大于 | 5 > 4 为真 5 > 5 为假 |
>= | 大于等于 | 5 >= 5 为真 5 >= 8 为假 |
< | 小于 | 4 < 5 为真 4 < 2+2 为假 |
<= | 小于等于 | 4 <= 2+2 为真 4 <= 3 为假 |
例题10.4:输入N个人的语文分数,小于60的用红矩形表示,大于等于60的用绿色矩形表示。例如:N=5,输入5个数是90 75 50 60 45,则画出:
样例程序10.4 | 图形 |
//prog:样例程序10.4 //author: teacher //2015.10.28
int main() { int N, x, c;//输入分数个数、分数、颜色号 cin>> N; pen.up(); for(int i=0; i<N; i++) { cin>> x; if(x>=60) c= _green; //分数>=60,c=绿色 else c= _red; //分数<60,c=红色
//到中心画实心矩形 pen.fd(x/2.0). rr(20, x ,c).bk(x/2.0); //到下一个位置 pen.rt(90).fd(20).lt(90); } return0; } |
|