在C语言编程中,分支和循环结构是构建复杂程序逻辑的基石。它们允许程序根据不同的条件执行不同的操作,并且能够重复执行一段代码,从而实现高效、灵活的程序设计。
一、分支结构
(一)if语句
基本形式
if语句是最基本的分支结构。它的基本形式为:
if (条件表达式) {
// 如果条件表达式为真,执行这里的语句块
}
例如,我们想要判断一个数是否为正数:
int num = 5;
if (num > 0) {
printf("%d是正数。\n", num);
}
这里的条件表达式是一个关系表达式(num > 0),它的结果为真(在C语言中,非零值表示真)或者假(零值表示假)。如果条件表达式为真,那么紧跟在if后面的语句块(大括号内的部分)将会被执行。
(二)if - else语句
当我们想要在条件不满足时执行另外一段代码时,可以使用if - else语句。其形式如下:
if (条件表达式) {
// 如果条件表达式为真,执行这里的语句块
} else {
// 如果条件表达式为假,执行这里的语句块
}
例如,判断一个数是正数还是非正数:
int num = -3;
if (num > 0) {
printf("%d是正数。\n", num);
} else {
printf("%d不是正数。\n", num);
}
(三)if - else if - else语句链
当有多个条件需要判断时,可以使用if - else if - else结构。例如,判断一个数是正数、负数还是零:
int num = 0;
if (num > 0) {
printf("%d是正数。\n", num);
} else if (num < 0) {
printf("%d是负数。\n", num);
} else {
printf("%d是零。\n", num);
}
(四)switch语句
基本形式
switch语句用于多分支选择。它的基本形式为:
switch (表达式) {
case常量表达式1:
// 当表达式的值等于常量表达式1时执行这里的语句块
break;
case常量表达式2:
// 当表达式的值等于常量表达式2时执行这里的语句块
break;
// 可以有多个case语句
default:
// 当表达式的值与所有常量表达式都不匹配时执行这里的语句块
break;
}
例如,根据用户输入的数字(1 - 3)显示相应的星期几(假设1代表星期一,2代表星期二,3代表星期三):
int day = 2;
switch (day) {
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
default:
printf("输入无效");
break;
}
在switch语句中,表达式的值会与每个case后面的常量表达式进行比较。一旦匹配成功,就会执行对应的语句块,直到遇到break语句或者switch语句结束。如果没有匹配的case,则会执行default部分(如果有)。
二、循环结构
(一)while循环
基本形式
while循环的基本形式为:
while (条件表达式) {
// 只要条件表达式为真,就会执行这里的语句块
}
例如,计算1到100的整数和:
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
printf("1到100的和为:%d\n", sum);
在这个例子中,while循环会一直执行语句块,只要i <= 100这个条件为真。每次循环中,i的值会增加1,直到i的值超过100,此时条件表达式为假,循环结束。
(二)do - while循环
基本形式
do - while循环与while循环类似,但它的语句块至少会被执行一次。其基本形式为:
do {
// 先执行这里的语句块
} while (条件表达式);
1.例如,同样计算1到100的整数和:int sum = 0;
int i = 1;
do {
sum += i;
i++;
} while (i <= 100);
printf("1到100的和为:%d\n", sum);
与while循环不同的是,do - while循环是先执行语句块,然后再判断条件表达式。如果条件表达式为真,则继续下一次循环;如果为假,则循环结束。
(三)for循环
for循环是一种更紧凑的循环形式,它的基本形式为:
for (初始化表达式; 条件表达式; 循环后操作表达式) {
// 只要条件表达式为真,就会执行这里的语句块
}
例如,再次计算1到100的整数和:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
printf("1到100的和为:%d\n", sum);
在for循环中,初始化表达式只在循环开始时执行一次,用于初始化循环变量(如int i = 1);条件表达式用于判断是否继续循环(如i <= 100);循环后操作表达式在每次循环体执行完后执行,通常用于更新循环变量(如i++)。
三、嵌套使用
1.分支结构嵌套
在if语句或者switch语句中,可以嵌套其他的分支结构。例如,在一个判断成绩等级(优秀、良好、中等、及格、不及格)的程序中,如果成绩为优秀(90分及以上),再判断是否为满分(100分):
int score = 95;
if (score >= 90) {
if (score == 100) {
printf("满分!\n");
} else {
printf("优秀\n");
}
} else if (score >= 80) {
printf("良好\n");
} else if (score >= 70) {
printf("中等\n");
} else if (score >= 60) {
printf("及格\n");
} else {
printf("不及格\n");
}
2.循环结构嵌套
循环结构也可以相互嵌套。例如,使用嵌套的for循环来输出九九乘法表:
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
printf("%d×%d = %d\t", i, j, i*j);
}
printf("\n");
}
外层for循环控制行数,内层for循环控制列数,这样就可以输出一个完整的九九乘法表。
通过熟练掌握C语言中的分支和循环结构,我们能够编写各种复杂的程序逻辑,从简单的数值计算到复杂的数据处理和算法实现都离不开它们。希望这篇博客能够帮助你更好地理解和运用这些重要的编程结构。