根据提供的文档信息,我们可以整理出以下关键知识点:
### 1. 字符常量的理解
- **测试题 31**:题目询问了哪个选项不是 C 语言中的合法字符常量。
- A 项 `'\65'`:合法,八进制表示,等同于 `A`。
- B 项 `'\xff'`:合法,十六进制表示,等同于 `255`。
- C 项 `'\028'`:合法,八进制表示,等同于 `24`。
- D 项 `'&'`:合法,直接字符表示。
因此,本题没有提供不合法的字符常量选项。正确答案应该是指出所有选项都是合法的,但题目可能期望的答案是 D(如果按照题目表述),因为通常情况下,直接给出符号而非转义序列被视为一种特殊情况。
### 2. 指针与数组操作
- 题目询问了哪种关于指针变量 p 与数组 a 的操作是无法完成的。
- A 项 `p=&a[0];`:合法,将数组首元素地址赋给指针。
- B 项 `p=a;`:合法,同样将数组首元素地址赋给指针。
- C 项 `p=&a;`:不合法,指针 p 不能指向整个数组 a 的地址。
- D 项 `*p=a[0];`:合法,将数组首元素值赋给指针所指内存单元。
正确答案是 C。
### 3. 条件运算符的使用
- **题目**:如果 `x=22`, `y=26`, `z=0`,那么执行 `z=x>y?x:y` 后,z 的值是多少?
- 解答:根据条件运算符的规则,`x>y` 为假,因此 `z` 被赋值为 `y` 的值,即 `26`。
正确答案是 B。
### 4. 函数设计的目的
- **题目**:对于建立函数的目的,哪个选项是正确的?
- A 项:提高程序的执行效率。这可能是间接效果,但不是主要目的。
- B 项:减少程序的篇幅。这也可能是副作用,但不是主要目的。
- C 项:减少程序文件所占的空间。这不是函数的主要目的。
- D 项:提高程序的可读性。这是函数设计的主要目的之一。
正确答案是 D。
### 5. 指针的合理操作
- **题目**:已定义 `char *p1, *p2;` 下列哪条表达式是正确合理的?
- A 项 `p1/=5;`:不合法,指针不能进行除法运算。
- B 项 `p1+=5;`:合法,使指针向后移动 5 个位置。
- C 项 `p1=&p2;`:合法,将指针 p2 的地址赋给 p1。
- D 项 `p1*=p2;`:不合法,指针不能与另一个指针相乘。
正确答案是 C。
### 6. while 循环的应用
- **题目**:以下程序的运行结果是什么?
```c
main(){
int i=1,sum=0;
while(i<10) {
sum=sum+1;
i++;
}
printf("i=%d,sum=%d",i,sum);
}
```
- 解答:循环执行 9 次,每次 i 增加 1,sum 增加 1,最终 i=10,sum=9。
正确答案是 B。
### 7. 表达式的计算
- **题目**:若 k 的值为 4,则计算表达式 `(j = 4, k--)` 后,j 和 k 的值分别为多少?
- 解答:`k--` 先取 k 的值 4,然后 k 自减变为 3;`j = 4` 使得 j 的值为 4。
正确答案是 C。
### 8. 数组初始化的区别
- **题目**:给出了两种不同的数组初始化方式,询问哪个说法正确?
- A 项:数组 x 的长度大于数组 y 的长度。正确,因为 x 是通过字符串初始化,包含了终止符 `\0`。
- B 项:数组 x 和数组 y 等价。不正确。
- C 项:数组 x 和数组 y 的长度相同。不正确。
- D 项:数组 x 的长度小于数组 y 的长度。不正确。
正确答案是 A。
### 9. 循环次数的计算
- **题目**:在给出的程序中,`i > j` 这个判断总共执行了多少次?
- 解答:循环会一直执行直到 i 大于等于 j,这里 i 从 0 开始每次增加 2,j 的值为 10。i 分别取值 0, 2, 4, 6, 8, 10,共进行了 6 次比较。
正确答案是 C。
### 10. 复合条件的判断
- **题目**:找出符合 `m%3==2 && m%5==3 && m%7==2` 的 m 的值。
- 解答:逐个验证选项,只有当 m=23 时,所有条件同时成立。
正确答案是 D。
### 11. 字符串与指针的使用
- **题目**:判断给出的选项中哪些是正确的。
- A 项:`char *a="china";` 不等价于 `char *a; *a="china";`。后者语法错误。
- B 项:`char str[10]={"china"};` 不等价于 `char str[10]; str[]={"china"};`。后者语法错误。
- C 项:`char c[4]="abc", d[4]="abc";` 不等价于 `char c[4]=d[4]="abc";`。后者语法错误。
- D 项:`char *s="china";` 等价于 `char *s; s="china";`。正确。
正确答案是 D。
### 12. 位运算的理解
- **题目**:给定 b 的二进制值为 `00000010`,求表达式 `(b>>2)/(b>>1)` 的值。
- 解答:`(b>>2)` 结果为 `00000000`,`(b>>1)` 结果为 `00000001`,所以最终结果为 0。
正确答案是 A。
### 13. do-while 循环的特性
- **题目**:询问 do-while 循环的特点。
- A 项:do-while 循环在 while 后的表达式为零时结束循环。正确。
- B 项:do-while 循环只能用 break 语句退出。不正确,也可以通过修改循环条件退出。
- C 项:do-while 循环不能用其他语句代替。不正确,可以通过其他结构实现相同逻辑。
- D 项:do-while 循环在 while 后的表达式为非零时结束循环。不正确,应该是为零时结束。
正确答案是 A。
### 14. 函数参数类型的处理
- **题目**:询问关于函数参数类型的正确说法。
- A 项:形参与实参类型不一致时,以实参类型为准。不正确,应以形参类型为准。
- B 项:return 后的值不能为表达式。不正确,可以是表达式。
- C 项:定义函数时,形参的类型说明可以放在函数体内。不正确,必须放在函数声明或定义中。
- D 项:函数值类型与返回值类型不一致时,以函数值类型为准。正确。
正确答案是 D。
### 15. 字符数组的输入
- **题目**:已定义两个字符数组 a 和 b,询问正确的输入格式。
- A 项 `scanf("%s%s", &a, &b);`:不正确,应该去掉取址符。
- B 项 `scanf("%s%s", a, b);`:正确。
- C 项 `gets("a"), gets("b");`:不正确,应该直接使用变量名。
- D 项 `get(a, b);`:语法错误。
正确答案是 B。
### 16. 宏定义的理解
- **题目**:宏定义 `#define PI 3.14` 中的宏名 PI 替代什么?
- 解答:宏名 PI 替代一个字符串 `"3.14"`。
正确答案是 C。
### 17. 注释与语句的使用
- **题目**:询问关于 C 语言注释与语句使用的正确说法。
- A 项:C 程序中注释部分可以出现在程序中任何适当的位置。正确。
- B 项:分号是 C 语句之间的分隔符,不是语句的一部分。不正确,分号是语句的一部分。
- C 项:花括号 “{” 和 “}” 只能作为函数体的定界符。不正确,也可以用于 if、while 等语句块。
- D 项:构成 C 程序的基本单位是函数,所有函数名都可以由用户命名。不完全正确,主函数名 `main` 必须固定。
正确答案是 A。
### 18. 数组元素的初始化
- **题目**:假设有声明 `int a[3][4];`,那么数组 a 中各元素如何初始化?
- 解答:在没有显式初始化的情况下,数组 a 中的元素默认初始化为未定义的值。
正确答案是 A(题目中的 A 项缺失,此处补充说明)。
以上是针对给定文档中的问题总结的关键知识点,涵盖了字符常量、指针、数组、函数、宏定义等多个方面,旨在帮助理解 C 语言的基础概念和编程实践技巧。