第十课 选择结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ahwhjt/article/details/49513047

第十课 选择结构

 

if语句】

      程序设计中选择结构可以让程序能根据数据情况作出判断、选择,使程序更“智慧”。C++语言最常见的实现选结构的择语句是if语句,语法格式有2种:

(一)if语句格式1
     if (
条件  ) 语句/复合语句;
   

     if (
条件  ) 

语句/复合语句;

   
这个语句的功能为:如果条件成立,就执行后面的语句或复合语句。不成立就什么都不做。

 

if语句格式1流程示意图:


例题10.1:编程实现一个信号灯的控制程序。键盘输入整数N

l 如果N等于1就画红色圆;

扫描二维码关注公众号,回复: 3338816 查看本文章

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

 

if语句格式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表示亮灯先后的序号,编号序列是:0123456783个一组则为:(012)(345)(678)…。可发现规律: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,周期输出2345,共输出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;          //分数<60c=红色

      

      //到中心画实心矩形

        pen.fd(x/2.0). rr(20, x ,c).bk(x/2.0); 

       //到下一个位置

        pen.rt(90).fd(20).lt(90);

   }

  return0;  

}

 

 

 

猜你喜欢

转载自blog.csdn.net/ahwhjt/article/details/49513047