一、分支
1、if语句
1.1、if
if(表达式)
语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。
例子:
#include <stdio.h>
int main()
{
int num = 10;
if (num == 10) {
printf("数字 %d 等于 10\n", num);
}
return 0;
}
1.2、else
if ( 表达式 )
语句1
else
语句2
例子:
#include <stdio.h>
int main() {
int num = 10;
if (num == 5) {
printf("数字 %d 等于5\n", num);
}
else {
printf("数字 %d 不等于 5\n", num);
}
return 0;
}
例子中,因为num不等于5,所以不执行if语句,执行else语句。
1.3、else if
if(表达式)
语句1
else if(表达式)
语句2
else
语句2
例子:
#include <stdio.h>
int main() {
int num = 10;
if (num > 10) {
printf("数字 %d 大于 10\n", num);
} else if (num == 10) {
printf("数字 %d 等于 10\n", num);
} else {
printf("数字 %d 小于 10\n", num);
}
return 0;
}
例子中,先执行if语句,if语句不满足条件,则执行else if语句,满足条件,打印语句,else不执行。
1.4、嵌套if语句
例子:
#include <stdio.h>
int main() {
int num = 10;
if (num > 0) {
printf("数字是正数。\n");
if (num < 10) {
printf("同时,数字小于10。\n");
}
} else {
printf("数字是非正数。\n");
}
return 0;
}
首先,外层的if
语句检查num
是否大于0,因为num
的值大于0,那么程序会输出“数字是正数。”。接下来,在if (num > 0)
的代码块内部,有一个嵌套的if
语句,它检查num
是否小于10:如果num
的值不仅大于0,而且小于10,那么程序还会输出“同时,数字小于10。”。因为外层的if语句已执行,则程序不会执行else
:
1.5、分支中包含多条语句
例子:
#include <stdio.h>
int main() {
int num = 0;
scanf("%d", &num);
if (num > 0)
printf("num大于0\n");
printf("num为正数\n");
return 0;
}
在这个例子中,不管num输入多少,都会打印num为正数,所以在编辑代码的过程中,建议加上{},避免造成歧义。
2、switch语句
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
注意:
switch
后的
expression
必须是整型表达式
case
后的值,必须是整形常量表达式
2.1、swich的break
例子:
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("数字是1。\n");
break;
case 2:
printf("数字是2。\n");
break;
case 3:
printf("数字是3。\n");
break;
}
return 0;
}
输出:数字是2。
例子:缺少break
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("数字是1。\n");
break;
case 2:
printf("数字是2。\n");
case 3:
printf("数字是3。\n");
break;
}
return 0;
}
输出:
数字是2。
数字是3。
2.2、switch中的default
default用于处理所有未被case标签明确匹配的情况。当switch语句的表达式结果没有与任何case标签匹配时,程序将执行default标签下的代码块。
例子:
#include <stdio.h>
int main() {
int num = 5;
switch (num) {
case 1:
printf("数字是1。\n");
break;
case 2:
printf("数字是2。\n");
break;
case 3:
printf("数字是3。\n");
break;
default:
printf("数字不是1到3之间的任何一个。\n");
break;
}
return 0;
}
输出:数字不是1到3之间的任何一个。
2.3、switch和if的区别
//使用switch
#include <stdio.h>
int main() {
int num = 5;
switch (num) {
case 1:
printf("数字是1。\n");
break;
case 2:
printf("数字是2。\n");
break;
case 3:
printf("数字是3。\n");
break;
default:
printf("数字不是1到3之间的任何一个。\n");
break;
}
return 0;
}
//使用if
#include <stdio.h>
int main() {
int num = 5;
if (num == 1) {
printf("数字是1。\n");
} else if (num == 2) {
printf("数字是2。\n");
} else if (num == 3) {
printf("数字是3。\n");
} else {
printf("数字不是1到3之间的任何一个。\n");
}
return 0;
}
二、循环
1、for循环
for(表达式1; 表达式2; 表达式3)
语句;
表达式1 ⽤于循环变量的初始化表达式2 ⽤于循环结束条件的判断表达式3 ⽤于循环变量的调整
例子:输出1~10
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
}
return 0;
}
在使用for循环时,表达式可以不用全写上
例子:(没有省略表达式2)
#include <stdio.h>
int main() {
int i = 1;
for (; i <= 10; ) {
printf("%d ", i);
i++;
}
return 0;
}
例子:(省略表达式2)
#include <stdio.h>
int main() {
int i = 1;
for (; ; ) {
printf("%d ", i);
if (i >= 10) {
break;
}
i++;
}
return 0;
}
2、while循环
while(表达式)
语句;
例子:输出1~10
#include <stdio.h>
int main() {
int i = 1;
while (i <= 10) {
printf("%d ", i);
i++;
}
return 0;
}
如果表达式为1,需要if语句为退出循环,不然就会死循环
例子:
#include <stdio.h>
int main() {
int i = 1;
while (1) {
printf("%d ", i);
if (i >= 10)
break;
i++;
}
return 0;
}
3、do-while循环
do
语句;
while(表达式);
例子:输出1~10
#include <stdio.h>
int main() {
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
注意:while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
4、嵌套循环
例子:for循环和while循环嵌套
#include <stdio.h>
int main() {
int i = 0;
int j = 0;
// 外层while循环,假设循环3次
while (i < 3) {
printf("开始第 %d 次外层循环\n", i + 1);
// 内层for循环,假设每次打印4个字符'A'
for (j = 0; j < 4; j++) {
printf("A");
}
printf("\n"); // 内层循环结束后换行
i++; // 外层循环计数器递增
}
return 0;
}
输出:
开始第 1 次外层循环
AAAA
开始第 2 次外层循环
AAAA
开始第 3 次外层循环
AAAA
5、循环时的break和continue
5.1、break
例子:
#include <stdio.h>
int main()
{
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
// 当 i 等于 5 时,执行 break 语句退出循环
if (i == 5) {
break;
}
}
return 0;
}
输出:1 2 3 4 5
5.2、continue
例子:
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
// 当 i 等于 5 时,执行 continue 语句跳过本次循环的剩余部分
if (i == 5) {
continue;
}
printf("%d ", i);
}
return 0;
}
输出:1 2 3 4 6 7 8 9 10