在编程世界里,有三种结构,分别是顺序结构,选择结构,循环结构。其中选择与循环结构是构建复杂程序逻辑的重要基石,这里我们称他们为分支与循环结构。它们赋予了程序根据不同条件做出决策以及重复执行特定代码块的能力,让程序不再是简单的顺序执行。这里我是基于C语言来介绍这两种结构。
一、分支结构
1.if - else语句
if - else语句是 C 语言中最基本的分支结构。它的作用是根据给定的条件判断来决定执行哪一段代码。语法形式如下:
if (条件)
{
// 当条件为真时执行的代码块
} else {
// 当条件为假时执行的代码块
}
条件为真即是条件成立,反之。比如下列代码:
int main()
{
int num = 10;
if (num > 5) {
printf("数字大于5\n");
} else {
printf("数字小于等于5\n");
}
return 0;
}
在这个例子中,变量num的值被初始化为 10,条件num > 5为真,所以会执行if代码块中的语句,输出 “数字大于 5”。
2.多重if - else 语句
这个与上面的其实差不多,只是多了些条件。以下的例子可以帮助我们理解:
int main()
{
int score = 85;
if (score >= 90) {
printf("成绩等级为A\n");
} else if (score >= 80) {
printf("成绩等级为B\n");
} else if (score >= 70) {
printf("成绩等级为C\n");
} else if (score >= 60) {
printf("成绩等级为D\n");
} else {
printf("成绩等级为F\n");
}
return 0;
}
上述代码根据score的值来判断成绩等级,通过层层条件判断,最终确定对应的等级并输出。
3. switch-case语句
switch语句也是一种分支结构,适用于根据一个整型表达式的值来选择执行不同的代码块。语法如下:
switch (表达式) {
case 结果1:
// 当表达式等于结果1时执行的代码
break;
case 结果2:
// 当表达式等于结果2时执行的代码
break;
// 可以有更多的case分支
default:
// 当表达式不等于任何一个结果时执行的代码
break;
}
这里需要注意两点:1.这个表达式必须是要能算出来的整数的式子;2.我们根据情况而确定break是否需要使用,看下里面的例子:
int main()
{
int day = 3;
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
default:
printf("其他日期\n");
break;
}
return 0;
}
这里根据day的值来输出对应的星期几,switch语句在处理这种多分支情况时,代码结构更加清晰,效率也较高。
如果我们在这里把break都去掉那么这段代码从case 3 进去之后就不会停下,屏幕上就会打印出“星期三”“其他日期”,这显然不是我们所需要的,所以我们要注意break的使用。
二、循环结构
1.while 循环
while循环用于在条件满足时重复执行一段代码。语法为:
while (条件) {
// 循环体代码
}
这没什么好说的,只要条件为真就执行。要注意的是我们一定要有能跳出循环的条件,否则会陷入死循环。
2. do while 循环
do - while循环与while循环类似,但它先执行一次循环体,然后再判断条件。语法如下:
do {
// 循环体代码
} while (条件);
我们可以把while循环理解成while(条件)do{},那么这个do while就是先执行一次循环体代码,再去判断是否需要继续执行。
这里我们可以发现,条件的判断次数是一定大于等于循环体的执行次数的,对于while 循环来说,如果可以跳出循环,那么最后跳出循环时,条件判断了却不执行循环体,条件判断多一次;对于do while循环来说,如果可以跳出循环,循环体执行次数与条件判断的次数相等。
3.for 循环
我认为for循环是 C 语言中最常用的循环结构之一,因为我自己用的比较多,它把循环控制变量的初始化、条件判断和更新都集中在一个表达式中。语法为:
for (初始化; 条件; 更新) {
// 循环体代码
}
我们以下面的代码为例:
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
这里int i = 1就是初始化,如果前面没有出现i这个字母,这个int必须加,有些版本的好像并不能在for里面初始化改成下面的代码就行了;后面两个成分都比较简单,这里不做解释,这个循环体是这样执行的,先初始化,然后判断条件,条件为真,执行循环体,执行完毕,执行i ++,后面就不再初始化了,直接判断条件,执行循环体,i++。
下面就是for循环与if-else分支结合例子:
#include <stdio.h>
int main()
{
int numStudents, score;
printf("请输入学生人数: ");
scanf("%d", &numStudents);
for (int i = 1; i <= numStudents; i++)
{
printf("请输入第 %d 个学生的成绩: ", i);
scanf("%d", &score);
if (score >= 90) {
printf("成绩等级为A\n");
} else if (score >= 80) {
printf("成绩等级为B\n");
} else if (score >= 70) {
printf("成绩等级为C\n");
} else if (score >= 60) {
printf("成绩等级为D\n");
} else {
printf("成绩等级为F\n");
}
}
return 0;
}
这段代码通过for循环依次处理每个学生的成绩,用if - else分支结构判断成绩等级,展示了分支与循环结构在实际项目中的应用。
分支与循环结构是 C 语言编程的核心内容,掌握它们的使用方法和技巧,能够帮助我们编写出逻辑清晰、高效实用的程序。在不断的实践中,我们可以更深入地理解它们的特性,从而更好地运用到各种编程场景中。