1. if语句

1.1 简单if语句

1
2
3
if (条件) {
// 当条件为真时执行的代码
}

1.2 if-else 结构

  • 分支语句的作用if语句用于选择是否执行某个操作,而else用于在不满足if条件时执行另一种操作。这种二选一的分支结构在编程中很常见。

  • 匹配规则: 在多个ifelse语句连用的情况下,else语句总是与最近的if配对。除非你使用了大括号{}明确将if语句块分组。

1
2
3
4
5
6
if (条件) {    

}
else{

}

1.3 多重选择 else if

  • 多条件分支结构else if用于处理多个条件的情况,它在ifelse之间插入更多的条件判断。通过else if可以根据不同的条件执行不同的代码块。
1
2
3
4
5
6
7
8
9
10
11
12
if () {
;
}
else if () {
;
}
else if () {
;
}
else {
;
}

1.4 多层嵌套的 if 语句

  • 嵌套结构if语句可以嵌套在其他ifelse语句中,用来实现复杂的条件逻辑。每个条件语句可以包含更多的条件。

2.字符处理函数(ctype.h 库)

常用函数

  • isalnum(): 判断字符是否是字母或数字。

  • isalpha(): 判断字符是否为字母。

  • isdigit(): 判断字符是否为数字。

  • islower()isupper(): 判断字符是否是小写字母或大写字母。

  • tolower()toupper(): 将字母转换为小写或大写。

3.逻辑运算符

3.1 常见逻辑运算符

&&:与运算,两个表达式都为真时结果才为真。

||:或运算,任意一个表达式为真时结果为真。

!:非运算,将表达式的真假值取反。

3.2 求值顺序

逻辑运算的求值顺序是从左到右,遇到假值时立即停止求值。

1
2
(6 > 2 && 3 == 3)  // 结果为真
!(6 > 2 && 3 == 3) // 结果为假

3.3 逻辑运算符的优先级

逻辑运算符有优先级,与算术运算符不同,&&||的优先级较低,因此在复杂表达式中建议使用括号明确优先级。

3.4 ISO646 逻辑运算符的替换拼写

为了方便键盘输入,C99 标准允许使用andornot来代替&&||!运算符。

4.条件表达式 (三元运算符)

条件表达式: 条件表达式是 if-else 的一种简洁替代语法,用于根据条件返回不同的结果。其一般形式为:

1
expression1 ? expression2 : expression3;

expression1 为真时,返回 expression2 的值;否则返回 expression3 的值。

示例:

1
max = (a > b) ? a : b;

如果 a > b 为真,max 取值为 a,否则取值为 b。此运算符常用于简单的条件选择,能使代码更简洁。

5.continue 和 break 语句

5.1 continue 语句

continue 语句用于跳过循环中的当前迭代并开始下一次迭代。在遇到 continue 时,程序跳过循环的剩余部分,直接进入下一次循环的条件检测。

通过使用 continue 语句,程序跳过不合法的输入,继续要求用户输入新的分数。

5.2 break 语句

break 语句用于终止循环,不再执行后续的循环迭代。它会直接跳出当前循环结构,继续执行循环之后的代码。

6.swtich语句

6.1 switch 语句基础

switch语句用于根据一个表达式的值跳转到不同的分支(case)。每个case都与一个值对应,程序根据表达式的值匹配相应的case,并执行该case下的语句。

1
2
3
4
5
6
7
8
9
10
switch (expression) {
case constant1:
// 执行语句1
break;
case constant2:
// 执行语句2
break;
default:
// 默认执行语句
}

switch语句中的case标签必须是常量表达式,如整数或字符值。default是可选的,用于在没有case匹配时执行默认语句。

6.2 break 语句在 switch 中的作用

break语句用于在匹配的case执行完毕后,跳出switch语句。如果没有break,程序会继续执行后续的case,即“贯穿”现象。

6.3 多重标签的使用

switch中,一个case标签可以对应多个值。通过列出多个case标签,所有这些值都会执行相同的语句。

1
2
3
4
5
6
7
8
9
10
switch (ch) {
case 'A':
case 'a':
printf("A or a\n");
break;
case 'B':
case 'b':
printf("B or b\n");
break;
}

7. goto语句

7.1 goto 语句简介

goto 语句是一种跳转控制语句,能够让程序跳转到程序中标记的位置。它的语法如下:

1
2
3
goto label;
// 中间跳过的代码
label: 代码;

7.2 避免使用 goto 的原因

代码可读性问题goto 语句会使代码的控制流变得不直观,增加理解和调试的难度。

代码维护困难:使用 goto 可能会造成跳转的混乱,使得程序的逻辑变得复杂,难以维护。

建议使用替代方法:通过更结构化的控制流,如 if-else 语句、循环、breakcontinue 等,可以避免使用 goto

7.3 goto 常见的替代方案