Skip to content
On this page

控制结构

if语句的形式有两种:

  1. 没有else
cpp
if ( 条件 )
    语句1;
1
2
  • 条件 -> con
  • 语句1 -> stmt1
  • 语句2 -> stmt2
plaintext
             +------+
             | con  |----+
             +------+    |
                |        |
                | YES    | NO
                v        |
            +---------+  |
            |  stmt1  |  |
            +---------+  |
                         |
                +--------+
                |
                v
            后面的语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14

样例:输入一个分数,判断是否及格,及格输出YES,否则什么也不做。

cpp
#include <iostream>
using namespace std;

int main(){ 
    int a;
    cin >> a;
    if( a>=60 ) //是否>=60
        cout <<"yes\n";
    return 0;
}
1
2
3
4
5
6
7
8
9
10
  1. 有else
cpp
if ( 条件 )
    语句1;
else
    语句2;
1
2
3
4
plaintext
                  +------+
          +-------| con  | --------+
     YES  |       +------+         | NO
          |                        |
          v                        v
      +-------+                +-------+
      | stmt1 |                | stmt2 |
      +-------+                +-------+
          |                        |
          |                        |
          +----------+------------+
                     |
                     v
                 后面的语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14

样例:输入一个分数,判断是否及格

cpp
#include <bits/stdc++.h>    //万能头文件
using namespace std;
typedef long long ll;

int main(){
    int a; //定义一个变量
    cin >> a; //输入一个值
    if( a >= 60)    //if只能控制后面的一句话
        cout << "YES\n";
    else
        cout << "NO\n";
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13

注意

  • if可以单独出现
  • 如果有else,必须要有if
  • ifelse都只能控制后面紧跟着的一名话
    • 如果想控制多句话,用{}括起来,形成一个语句块
  • ifelse合起来算一句话,如果没有elseif算一句话

if 语句之间的嵌套

思想下面的几个代码的运行结果

cpp
#include <bits/stdc++.h>    //万能头文件
using namespace std;
typedef long long ll;

int main(){
    int a; //定义一个变量
    cin >> a;
    if( a >= 60)    //if只能控制后面的一句话
        //下面的if else 形成一句话 ,被上面的if(a>=60) 控制
        if ( a>= 70)
            cout << ">= 70\n";
        else
            cout << ">=60 ,< 70\n";
    else
        if( a > 30)
            cout << "a > 30,a<60\n";
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

任务:编写这个代码,回答下面的问题

  • 分别输入20,30,40,60 70 80查看输出结果是什么,分析原因
cpp
#include <bits/stdc++.h>    //万能头文件
using namespace std;
typedef long long ll;

int main(){
    int a; //定义一个变量
    cin >> a; //输入一个值
    if( a >= 60)    //if只能控制后面的一句话
        //下面的if else 形成一句话 ,被上面的if(a>=60) 控制
        if ( a>= 70)
            cout << ">= 70\n";
        else
            cout << ">=60 ,< 70\n";
    else
        if( a > 30)
            cout << "a > 30,a<60\n";
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • 分别输入60,70,80,90查看输出结果是什么,分析原因

学习到:

ifelse都只能控制后面紧跟着的一名话,如果想控制多句话,用{}括起来,形成一个语句块

if ... else if ...else if...

编写运行下面的代码,分别输入50 60 75 85 95,查看输出结果是什么,分析原因。

cpp
#include <bits/stdc++.h>    //万能头文件
using namespace std;
typedef long long ll;

int main(){
    int a; //定义一个变量
    cin >> a;//输入一个值
    if( a >= 90)  //60
        cout << "you xiu\n";
    else if ( a >= 80 )
        cout << "liang hao\n";
    else if( a >=60)
        cout << "ji ge\n";
    else
        cout << "bu ji ge\n";
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

与下面的写

cpp
#include <bits/stdc++.h>    //万能头文件
using namespace std;
typedef long long ll;

int main(){
    int a; //定义一个变量
    cin >> a;//输入一个值
    if( a >= 90)  //60
        cout << "you xiu\n";
    else {
        if ( a >= 80 )
            cout << "liang hao\n";
        else {
            if( a >=60)
                cout << "ji ge\n";
            else
                cout << "bu ji ge\n";
        }
    }
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  • else和它上面的最近的同级别的if配对