算法的基本控制结构之选择结构

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

<<

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

例如,cout<<"a+b="<<a+b;会把"a+b="这个字符串和a+b的计算结果输出到屏幕。如果a=1,b=2;则屏幕上显示a+b=3。

>>

“>>”是提取符,用到cin上用来把键盘上输入的数赋值给变量。使用形式为:cin>>表达式>>表达式...。这里的提取符也可以有多个,每个后边跟一个表达式,这里的表达式一般是用来存放输入值的变量。

比如,int a,b; cin>>a>>b;后面这个语句要求从键盘上输入两个整型数,两个数之间用空格分隔,如果输入 3 4,则变量a的值为3,b的值为4。

操纵符

操纵符用来把输出值以特殊的格式显示出来。比如setw(int)用来设置域宽,就是设置数值的显示位数,setprecision(int)用来设置浮点数的小数位数(包括小数点),endl插入换行符,并刷新流。还有Dec,Hex,Oct是要求以几进制显示。

基本控制结构

算法的基本控制结构包括顺序结构、选择结构和循环结构。顺序结构就是按照事物的逻辑一条语句一条语句的写下来,顺序执行,就像流水账。

如果有这样一个问题,若x<0,则y=-1,若x=0,则y=0,若x>0,则y=1。这里涉及到好几种选择,顺序结构肯定不行了,就要用到选择结构。

用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<<x。

我们就在这个main函数里写一段代码,用来判断输入一个年份时这个年份是不是闰年。大家知道,可以被4整除不能被100整除,或者能被400整除的年份都是闰年。下面是程序:

#include <iostream>
using namespace std;
int main()
{
    int nYear;
    bool bIsLeapYear;
    cout<<"Enter the year:";
    cin>>nYear;
    bIsLeapYear = ((nYear%4==0 && nYear%100!=0) || (nYear%400==0));
    if (bIsLeapYear)
        cout<<nYear<<"is a leap year."<<endl;
    else
        cout<<nYear<<"is not a leap year."<<endl;
    return 0;
}

在这里插入图片描述

多重选择结构

嵌套的if语句
使用的语法形式:

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

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

#include <iostream>
using namespace std;
int main()
{
    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;
}

在这里插入图片描述
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…就这样一层一层判断着执行下去。

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;

如果整型变量a为0则输出“小鸡”,如果为1则输出“小啄”,如果为2则输出“小米”,其他情况下输出“鸡啄米”。程序如下:

#include <iostream>
using namespace std;
int main()
{
    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;
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光开朗男孩

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值