diff --git a/docs/programming/24fall/lec5.md b/docs/programming/24fall/lec5.md
index ea9fd17..caa4ba3 100644
--- a/docs/programming/24fall/lec5.md
+++ b/docs/programming/24fall/lec5.md
@@ -1,4 +1,4 @@
-# 程序设计与算法基础 期末复习(上)
+# 第五讲:期末复习(上)
## 1 变量与计算
@@ -15,7 +15,8 @@ int x;
![Alt text](lec5.assets/keyword.png)
-> 例1.1-1 Which one below is NOT a valid identifier in the C programming language?
+例1.1-1:
+Which one below is NOT a valid identifier in the C programming language?
A. printf
B. _m$
C. 114514
@@ -31,7 +32,7 @@ unsigned short sht = 0;
sht--;
```
-> 例1.2-1 0.1 + 0.2 == 0.3 ?
+例1.2-1: 0.1 + 0.2 == 0.3 ?
```C
int n=1;
@@ -75,10 +76,11 @@ char f0 = '\x00041';// 和上面的是一样的
运算顺序问题,简单来说:赋值运算符和位运算符较低,略高的是算术运算,再高的是自增/减
-> 例1.3-1 若定义 `int a=1,b=2,c=3,d=4` 那么表达式 `(a>b?c>a?c-3:c-1:b==c?d-a:d-c)` 的值为
+例1.3-1:
+若定义 `int a=1,b=2,c=3,d=4` 那么表达式 `(a>b?c>a?c-3:c-1:b==c?d-a:d-c)` 的值为
#### 表达式的结果
-> 例1.3-2
+例1.3-2:
表达式 `(3 例4-1 C语言中,通过函数调用只能获得一个返回值?
+例4-1:
+C语言中,通过函数调用只能获得一个返回值?
- 函数名:用于标识函数
-> 例4-2 函数可以嵌套调用但不能嵌套定义?
+例4-2:
+函数可以嵌套调用但不能嵌套定义?
- 参数表:用逗号分隔的参数类型和参数名,声明时参数名可以省略
-> 例4-3 若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是()。
+例4-3:
+若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是()。
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在, 不占用具体存储单元
C.同名的实参和形参占同一存储单元
@@ -232,7 +237,8 @@ void swap(int x,int y) { // 函数定义
}
```
->例4-4 函数调用语句`function((a,b),c)`中含有的实参个数为?
+例4-4:
+函数调用语句`function((a,b),c)`中含有的实参个数为?
## 5 排序
|算法|平均时间复杂度|最好情况|最坏情况|稳定性|
@@ -255,7 +261,8 @@ int *p = &a; // &是取地址运算符
声明中 `*` 只对**直接结合的标识符**生效
-> 例6.1-1 变量定义:`int *p, q;`中,`p`和`q`都是指针?
+例6.1-1:
+变量定义:`int *p, q;`中,`p`和`q`都是指针?
**指针允许指向一个不完整类型**:
@@ -265,7 +272,8 @@ int (*b)[3];// b是一个指针,指向一个数组,数组元素是int,数组长
int *c[]; // ?
int (*d)[]; // d是一个指针,指向一个长度未知的数组,数组元素是int
```
-> 例6.1-2 Among the following statements, __ is equivalent to the declaration: `int *p[4];`
+例6.1-2:
+Among the following statements, __ is equivalent to the declaration: `int *p[4];`
A.`int p[4];`
B.`int **p;`
C.`int *(p[4]);`
@@ -305,9 +313,11 @@ printf("%d#%d", a, b);
- 数组在很多情况下会进行到指针的**隐式转换**
- `p[n]`和`*(p+n)`是**完全等价**的(你甚至可以写`1[a]`来访问数组的第一个元素)
-> 例6.2-1 Given the declaration: `int a[3][3]={1,2,3,4,5,6,7,8,9};`, the value of `a[-1][5]` is ?
+例6.2-1:
+Given the declaration: `int a[3][3]={1,2,3,4,5,6,7,8,9};`, the value of `a[-1][5]` is ?
-> 例6.2-2 Given the declaration: `int a[3][2]={1,2,3,4,5,6};` what is the value of expression `(a[1]+1)[0]`?
+例6.2-2:
+Given the declaration: `int a[3][2]={1,2,3,4,5,6};` what is the value of expression `(a[1]+1)[0]`?
隐式转换:C语言规定任何数组类型的左值表达式,当用于异于
@@ -321,7 +331,8 @@ printf("%d#%d", a, b);
1. 作为函数的参数时,数组名被转换成指向其首元素的指针
2. 更改数组元素时
-> 例6.2-3 According to the declaration: `int p[5], *a[5];` the expression ______ is correct.
+例6.2-3:
+According to the declaration: `int p[5], *a[5];` the expression ______ is correct.
A.`p=a`
B.`p[0]=a`
C.`*(a+1)=p`
@@ -329,7 +340,8 @@ D.`a[0]=2`
二维数组不能隐式转换为二级指针
-> 例6.2-4 For the function declaration `void f(char** p)`,the definition __ of var makes the function call `f(var)` incorrect。
+例6.2-4:
+For the function declaration `void f(char** p)`,the definition __ of var makes the function call `f(var)` incorrect。
A.`char var[10][10];`
B.`char *var[10];`
C.`void *var = NULL;`