C++编程入门系列之六(算法的基本控制结构之选择结构)

时间:2022-09-08 16:42:35

上一讲鸡啄米为大家讲了运算符和表达式的知识,这一讲鸡啄米主要讲算法基本控制结构中的选择结构,同时教大家写比较简单的程序。

为了能写出简单的程序并看见它们的输出效果,鸡啄米先讲下数据的输入和输出。数据从一个对象到另一个对象的流动我们一般称之为“流”,比如程序中的数据在屏幕上显示出来,我们可以想成数据从程序流向屏幕,就是输出流。从键盘输入数据就是输入流了。从流中获取数据叫做提取操作,向流中添加数据叫做插入操作。cin是系统预定义的输入流,用来处理标准输入即键盘输入。cout是预定义的输出流,用来处理标准输出,即屏幕输出。

“<<”是预定义的插入符,它用在cout上可以实现屏幕输出。使用形式如下:cout<<表达式<<表达式…。这里可以连着多个表达式,输出多个数据到屏幕。这里的表达式可以是很复杂的表达式,系统会计算出这些表达式的值只把结果传给插入符<<,然后显示到屏幕上。例如,cout<<”a+b=”<

鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构)

一.用if语句实现选择结构

if语句专门用来实现选择结构,使用形式为:

  if (表达式)
  语句1
  else
  语句2

这个结构的执行顺序是,先计算表达式的值,如果为true,则执行语句1,否则就执行语句2。比如,

  if (x>y)
     cout<<x;
  else
     cout<<y;

这段程序可以用来输出x和y中比较大的那个数。if语句中的else和语句2可以没有,变成:if (表达式) 语句。比如,

if (x>y) cout<

二.多重选择结构

有些问题可能需要我们进行多次判断,这样就可以有几种方法

1.嵌套的if语句

使用的语法形式:

  if(表达式1)
  if(表达式2)  语句1
  else 
    语句2
  else
    if(表达式3)  语句3
  else 语句4

语句1、2、3、4可以是复合语句。每一层的if都要与else配对,如果省略掉一个else则要使用{}把这一层的if语句括起来。鸡啄米建议大家写程序的时候最好每层都用大括号括起来这样会大大减少出错的概率,也比较整齐,即使是熟手也一样。鸡啄米再给大家举个例子:

  #include "stdafx.h"
  #include <iostream>
  using namespace std;
  int _tmain(int argc, _TCHAR* argv[])
  {
         int x,y;
         cout<<"Enter x and y:";
         cin>>x>>y;
         if (x!=y)
         {
                if (x>y)
                     cout<<"x>y"<<endl;
                else
                     cout<<"x<y"<<endl;
         }
         else
         {
                cout<<"x=y"<<endl;
         }
         return 0;
  }

运行这个程序,屏幕上会显示,Enter x and y:,然后输入3 5,按回车接着会显示x

2.if…else if语句

若if语句的嵌套都在else分支下,就可以使用if…else if语句。使用的语法形式为:

  if (表达式1)  语句1
  else if (表达式2)   语句2
  else if (表达式3)   语句3
  ...
  else语句n

这里的执行逻辑就是,如果表达式1为true,则执行语句1,如果表达式1为false,且表达式2为true则执行语句2,如果表达式1、表达式2为false,且表达式3为true则执行语句3…就这样一层一层判断着执行下去。

3.switch语句

我们进行判断选择的时候,有可能每次都是对同一个表达式的值进行判断,那么就没有必要在每一个嵌套的if语句里都计算一下它的值,而是使用switch来解决这个问题。语法形式为:

  switch (表达式)
  {
  case 常量表达式1:  语句1
  case 常量表达式2:  语句2
  ...
  case 常量表达式n:  语句n
  default:   语句n+1
  }   

此类语句的执行顺序是,先计算表达式的值,然后在case语句中寻找与之相等的常量表达式,跳到此处开始执行,若没有与之相等的则跳到default开始执行。使用switch语句时要注意以下几点:这些常量表达式的值不能相同,顺序可以随便;每个case语句的最后都要加break语句,不然会一直把下面所有的语句执行完;switch括号里的表达式必须是整型、字符型和枚举型的一种;每个case下的语句不需要加{};如果多个case下执行一样的操作,则多个case可以共用一组语句,比如

  case 1:
  case 2:
  case 3:   a++;
            break;

鸡啄米再给大家举个switch的例子。如果整型变量a为0则输出“小鸡”,如果为1则输出“小啄”,如果为2则输出“小米”,其他情况下输出“鸡啄米”。程序如下:

  #include "stdafx.h"
  #include <iostream>
  using namespace std;
  int _tmain(int argc, _TCHAR* argv[])
  {
          int a;
          cout<<"Enter a:";
          cin>>a;
          switch (a)
          {
          case 0:
                   cout<<"小鸡"<<endl;
                   break;
          case 1:
                   cout<<"小啄"<<endl;
                   break;
          case 2:
                   cout<<"小米"<<endl;
                   break;
          default:
                   cout<<"鸡啄米"<<endl;
                   break;
          }
          return 0;
  }

运行时屏幕显示Enter a:,我们输入2,则会接着显示“小米”。

这一讲鸡啄米首先讲了输入输出流对象,然后讲了选择控制结构,举了几个程序例子,大家可以按照鸡啄米的程序上机调试运行下,也可以自己在此基础上改改程序然后看看结果是否如你所想,大家先找找编程的感觉,在编程入门的时候不要着急。

思考:

1. 什么是流?
2. 使用switch需要注意什么?5点
3. 本文讲到哪些知识点?

本文转自鸡啄米课堂