1,为什么要用选择语句;2,如何使用选择语句;3,逻辑运算符;

登录以参加训练计划

计算机的程序语句是一行行读取并执行的,但有时候我们需要根据条件不同,执行不同的语句块。这就是选择语句的主要作用。

选择语句有固定的写法,以下分别讨论:

1、if 选择语句


类型(1)单分支结构

if( `条件表达式`){
  语句1;
}

功能:如果条件表达式的值为真,即条件成立,语句1被执行。否则语句1被忽略。

说明:上面的”上面的条件表达式“必须用圆括号括起来。

注意:关系运算符==用来表达符号的左右两边是否相等,不要写成赋值号=。

举个栗子:

#include<iostream>
using namespace std;
int main(){
  int score=90;
  if (score>=90){  
      cout<<"优秀";
  }
}

以上是if else语句的简单应用,还有以下几种格式。

类型(2)if -else(双分支)

if( 条件表达式){
  语句1;
}else{
  语句2;
}

功能:如果条件表达式为真,执行语句1,如果为假,执行语句2。

注意:if 语句允许嵌套,即语句1或者语句2也可以是if语句,当if语句嵌套时,约定else总是和最近一个if语句配对。

举个栗子:

#include<iostream>
using namespace std;
int main(){
  int score=90;
  if (score>=90){  
      cout<<"优秀";
  }else{
    cout<<"通过";
  }
}

类型(3)if -else if(多分支)

`if` ( `条件表达式1`){
  语句1;
} else if('条件表达式2'){
  语句2;
} else{
  语句3;
}

2、三目运算符

c++有一个常用来代替if-else语句的操作符,这个操作符被称为三目运算符(?:),它是C++中唯一一个需要3个操作数的操作符。我们之前学的大多数是两目或者单目操作符,你能举些例子吗? 三目运算符是如何工作的呢?看下面的例子:

int x;
x=5>3?10:12;//x=10;
x=3==9?25:18;//x=18;

3、switch语句

用if语句可以使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if来解决,但是程序会显得复杂,凌乱。为方便多情况选择,C++提供了一种switch开关语句。

(1)语句格式:

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

注意事项:

(1)上述语句中可以使用一个或多个case标识号,但只能使用一个default标识,或者省略整个default部分;

(2)多个case 标号可以共享同一个语句序列,只要没有break语句;

(3)每个case语句标由case 常量表达式 :组成,每个常量表达式通常为字面常量,如常数或字符。

执行过程: 执行过程分为以下3步:

(1)计算出switch后面的圆括号内表达式的值,为了方便讨论,我们假定为M,若它不是整数,将自动舍去小数部分,只取整数部分作为结果值。

(2)依次计算出每个case常量表达式的值,假定为M1、M2、M3、...,同样若不是整数则取整数部分。

(3)让M依次同M1、M2、M3、...进行比较,一旦遇到M与某个M1或者M2相等,则从对应标号的语句开始执行;

注意事项:

(1)通常要求执行完某个case后的一组语句序列后,不再执行其它case语句块,从而结束整个switch语句。为此我们需要break,在switch语句中执行到它时,将结束该switch语句。

(2)case语句后面的各常量表达式的值不能相同,否则会出现错误码。

(3)每个case或default语句后,可以包含多条语句,不需要用“{”和“}”括起来。

(4)各case子句的先后顺序可以变动,这不影响程序执行结果。

(5)default子句可以省略,default后的语句末尾可以不必写break。

举个栗子: 根据键盘上输入的数字,输出相应的英语是星期几。

#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    switch (n) {
        case 1:
            cout << "Monday" << endl;
            break;
        case 2:
            cout << "Tuesday" << endl;
            break;
        case 3:
            cout << "Wednesday" << endl;
            break;
        case 4:
            cout << "Thursday" << endl;
            break;
        case 5:
            cout << "Friday" << endl;
            break;
        case 6:
            cout << "Saturday" << endl;
            break;
        case 7:
            cout << "Sunday" << endl;
            break;
        default:
            cout << "Invalid input" << endl;
            break;
    }
    return 0;
}

下面是常见的几种错误写法,注意避坑。

类型(1)

if(){

}else{

}else if(){

}

注意: else 一定要放在最后 并且只有一个else


4、逻辑关系符号

判断语句中主要出现这几种逻辑关系符号。跟我们在数学里学到的比较关系符用法一致。


  • <= : 小于等于
  • < : 小于
  • >=:大于等于
  • >:大于
  • == :一个等于是赋值,两个等于是判断
  • !=:判断是否相同

5、逻辑运算符

多个判断语句之间也可以有运符,逻辑运算符跟我们在数学里面的逻辑运算用法一致,比如,“没带红领巾 && 没穿礼服”的同学请出列。和“没带红领巾 || 没穿礼服”的同学请出列的人数可能是不同的。


&& : 与运算 当符号两边的都能满足才可以成立

|| : 或运算 只要符号两边的语句的其中一个成立即可

! : 对当前的语句进行取反操作。

章节 1. 新手

开放

题目 尝试 AC 难度
P90  练16.2 奇偶数判断 27 21 1
P92  【例17.1】 双面打印 43 22 4
P89  练16.1 跳绳达人 61 21 6
P82  【例15.3】 最大数输出 52 21 5
P86  【例16.1】 判断数正负 25 15 4
P87  【例16.2】 开灯 34 16 5
P88  【例16.3】 收费 33 10 7
P91  练16.3 选择题判定 18 4 9

章节 2. 师傅

开放

题目 尝试 AC 难度
P93  【例17.2】 蜗牛爬行 20 8 7
P94  【例17.3】 内功逼毒 16 8 8
P95  练17.1 奇偶ASCII值判断 24 12 6
P96  练17.2 公园门票 18 10 7
P98  【例18.1】 睡眠 26 9 7
P99  【例18.2】 孔融让梨 24 11 6
P106  【例19.2】 判断身材 13 6 8
P103  练18.3 组别判断 19 8 7

章节 3. 大神

开放

题目 尝试 AC 难度
P108  练19.1  整数大小比较 26 13 5
P111  练19.4  骑车与走路 18 6 8
P109  练19.2  三个数 53 18 1
P132  练22.1  闰年与平年 64 18 6
P135  练22.4  三角形判断 87 18 7
P136  【例23.1】 后天星期 16 7 8
P137  【例23.2】 这个月有几天 12 5 9
P138  【例23.3】 简单计算器 26 6 8
P139  练23.1  成绩等级 24 8 7
P142  练23.4  首字母 9 7 9
 
参加人数
18
创建人