4 Program flow structure

C++ supports three basic program execution structures:

  • Sequential structure
  • Choose structure
  • Loop structure

4.1 Structure Selection

4.4.1 if statement

Function: Executes statements that meet the criteria

If statements can be nested with superpositions

One-line if statement

If (condition){condition satisfies the statement that needs to be executed; }

Multi-line format if statement

If (condition){condition satisfies the statement executed}else{condition does not meet the statement executed}

Multiconditional if statement
If (condition) {statement that satisfies condition 1} else if(condition 2) {statement that satisfies condition 1 but does not meet condition 2}... Else {statement that neither satisfies};

Practice case

There are three pigs ABC, please input the weight of three pigs, and judge which one is the heaviest.

using namespace std;

class Pig {
    string name;
    int weight;

    Pig() { cout << "Pig constructed." << endl; }
    ~Pig() { cout << "Pig disconstructed." << endl; }

    void setName(string n) {
        name = n;
    void setWeight(int w) {
        weight = w;
    int getWeight() {
        return weight;
    string getName() {
        return name;

int main() {
    string name;
    int weight;

    Pig pigA;
    cout << "Please enter the name of pig A: ";
    cin >> name;
    cout << "Please enter the weight of pig A: ";
    cin >> weight;

    Pig pigB;
    cout << "Please enter the name of pig B: ";
    cin >> name;
    cout << "Please enter the weight of pig B: ";
    cin >> weight;

    Pig pigC;
    cout << "Please enter the name of pig C: ";
    cin >> name;
    cout << "Please enter the weight of pig C: ";
    cin >> weight;

    if (pigA.getWeight() >= pigB.getWeight() && pigA.getWeight() >= pigC.getWeight()){
        cout << pigA.getName() << " is the heavieat." << endl;
    else if (pigB.getWeight() >= pigA.getWeight() && pigB.getWeight() >= pigC.getWeight()){
        cout << pigB.getName() << " is the heavieat." << endl;
        cout << pigC.getName() << " is the heavieat." << endl;

    return 0;

I added output statements to the constructor and parser functions. As you can see, the compiler automatically frees up space without the use of new and delete.

4.1.2 switch statement

Function: Executes a multiconditional branch statement


Switch (expression) {case result 1: expression 1; break; Case result 2: expression 2; break; Case result 3: expression 3; break; Case result 4: expression 4; break; Case result 5: expression 5; break; ... Default: expression 6; }

Note: Without a break, all expressions in subsequent cases will be executed!

Difference between if and switch;

Switch can only determine integers and characters, not ranges

Switch has a clear structure and is more efficient.

Question: Can switch determine C-style or C++ style strings?

Answer: No, but you can determine the enumeration. (Try it at night.)

I tried enumeration and felt good. In fact, enumeration can be used as a set of related constants, which feels good to use.

using namespace std;

int main() {
    enum Color{red,green,yellow};

    Color color = red;
    int i = color;
    color = Color(i);

    switch (color) {
    case red:
        cout << "The color is red." << endl;

    case green:
        cout << "The color is green. " << endl;

    case yellow:
        cout << "The color is yellow. " << endl;

    return 0;

4.2 Cyclic structure

2 the while loop

Function: Satisfy the condition of loop, execute the loop statement

Syntax: while(loop condition){loop statement}

4.2.2 Do while loop

Function: First execute, then execute the statement in a loop


Do {loop statement; }while(loop condition);

PS. Note that this statement requires a semicolon after the while. This is the end of the entire do while statement.

#### 4.2.3 for loop

Action: Satisfy the condition, execute the loop statement

Syntax: for(the starting expression. Conditional expression, last loop body){loop statement}

4.3 Jump statement

Break: Break out of the current loop or switch

Continue: End this loop and proceed to the next loop

Goto: Jump to the location you marked, which can be used to break out of multiple loops


Goto tag; ... Tags:...

Note: Tag names are usually in pure uppercase; The jump should be marked with a colon.