Bootstrap

初识分支语句

1.语句

在C语言中,语句是一组按照特定规则编写的代码,它们被用于执行特定的任务。每个语句通常以分号 (;) 结束。C语言中有多种类型的语句,包括以下几种最常见的:

  1. 表达式语句:最简单的语句类型之一,用于执行一个表达式,并丢弃其结果。例如:x = 5;代码会执行一个赋值操作,将5赋值给变量x。

  2. 控制流语句:用于控制程序的执行流程。常见的控制流语句包括条件语句(如if语句和switch语句)和循环语句(如for循环和while循环)。

  3. 跳转语句:用于在程序中跳转到指定的代码位置。C语言提供了三种跳转语句:break、continue和goto。

  4. 复合语句:也被称为代码块,用于将多个语句组合在一起,并将它们作为一个整体来执行。复合语句通常用花括号 ({}) 括起来。

  5. 空语句:也被称为空操作语句,它不执行任何操作,只是一个分号。空语句常常用于占位或在某些特定情况下使用。

这些语句可以根据程序的逻辑和需要来组合和嵌套,从而完成复杂的任务和控制程序的行为。

接下来介绍都是控制语句。

2.控制语句

控制语句用于控制程序的执行流程,已实现程序的各种结构方式,它们由特定的语句定义符组成,C语言由9种控制语句,可以分为以下三类:

(1)条件判断语句也叫分支语句:if语句、switch语句;

(2)循环执行语句:do while语句、while语句、for语句;

(3)转向语句:break语句、goto语句、continue语句、return语句。

3.if语句

用于根据条件选择是否执行一段代码。如果条件为真,则执行if后面的代码块;如果条件为假,则跳过if块的代码。语法如下:

if (condition) {
    // 执行代码块
}
 

if-else语句:与if语句类似,但是在条件为假时会执行else后的代码块。语法如下:

if (condition) {
    // 执行代码块1
} else {
    // 执行代码块2
}
 

这里需要注意的是,一条if语句后只能跟随一条执行语句,如果有多条语句,需要放在大括号{}里,如果不加大括号,那么只有第一行代码会被视为if语句的一部分,而后面的代码则会按照顺序执行,而不受if语句的控制。这可能导致代码执行的结果与预期不符。另外,加上大括号可以更清晰地表达代码的逻辑结构,使代码更易于理解和调试。此外,如果后续需要在if语句中添加更多的代码,只需要在大括号内添加即可,而不需要再添加大括号本身。因此,为了代码的可靠性和可维护性,建议在if语句中始终加上大括号。

if-else的多分支语句:else可以有多个分支语句,如下所示:

int main()
{
	int age = 28;
	if (age < 18)
	{
		printf("未成年\n");
	
	}
		
	
	else if (age >= 18 && age < 28)
		//这里需要注意一下&&的使用,表示“并且”,最好不要写成 18 <= age < 28 
		//这样写代码虽然运行不会报错,但是可能在有些软件上运行逻辑是不对的,当age = 10时,也会执行
		//这条语句。因为当age = 10 >= 18为假即为0;而0 < 28为真,则会执行下面的语句
	{
		printf("青年\n");
	}
	else if(age >= 28 && age <40)
	{
		printf("中年\n");
	}


	return 0;
}

 这里有一个需要注意的地方,我写在代码注释里了。

4.Switch语句

在C语言中,Switch语句用于根据一个表达式的值跳转到不同的执行路径。它的语法格式如下:

switch (expression) {
    case value1:
        // code block 1
        break;
    case value2:
        // code block 2
        break;
    case value3:
        // code block 3
        break;
    default:
        // code block for default case
}
 

在这个语法中,expression是要进行判断的表达式,value1、value2、value3等是不同的取值。当expression的值与某个case后面的value值相匹配时,对应的代码块会被执行。如果没有匹配的case,就会执行default后面的代码块(可选)。

需要注意的是,在每个case后面的代码块执行完毕后,需要使用break语句来跳出switch语句,否则程序会继续执行后面的case代码块。另外,default语句是可选的,用于处理没有匹配的情况。

下面是一个示例:

#include <stdio.h>

int main() {
    int day = 3;
    switch (day) {
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 3:
            printf("Wednesday\n");
            break;
        default:
            printf("Other\n");
    }

    return 0;
}
 

在上述示例中,变量day的值为3,与case 3匹配,因此执行相应的代码块,输出"Wednesday"。

除此之外,switch语句可以使用char类型的字符作为表达式进行判断。

下面是一个使用char类型的字符的示例代码:

#include <stdio.h>

int main() {
    char grade = 'B';
    switch (grade) {
        case 'A':
            printf("Excellent\n");
            break;
        case 'B':
            printf("Good\n");
            break;
        case 'C':
            printf("Average\n");
            break;
        default:
            printf("Fail\n");
    }

    return 0;
}

在上述示例中,我们定义了一个字符型变量grade,并将其赋值为'B'。然后使用switch语句对grade进行判断。因为grade的值为'B',与case 'B'匹配,所以执行对应的代码块,输出"Good"。

;