根据提供的文件信息,我们可以详细分析每个题目中的知识点及其解答过程。
### 1. 若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a, i; 其中0≤i≤9,则对a数组元素不正确的引用是
- **解析**:
- `int a[]` 定义了一个整型数组 `a`。
- `*p=a` 表示指针 `p` 指向数组 `a` 的第一个元素。
- 选项分析:
- A) `a[p-a]`:此表达式相当于 `a[0]`,因为 `p` 指向 `a` 的第一个元素,`p-a` 得到的结果为 0,故此引用正确。
- B) `*(&a[i])`:`&a[i]` 得到的是数组 `a` 第 `i` 个元素的地址,再通过 `*(&a[i])` 取其值,因此引用正确。
- C) `p[i]`:这是指针 `p` 使用下标访问的方式,由于 `p` 指向数组的第一个元素,因此 `p[i]` 实际上等同于 `a[i]`,引用正确。
- D) `a[p-a-1]`:`p-a` 得到 0,`p-a-1` 得到 -1,这意味着 `a[p-a-1]` 相当于 `a[-1]`,这在 C 语言中是不合法的,因为数组下标必须是非负数。
- **答案**:D
### 2. 已知指针p的指向如下图所示,则执行语句*--p;后*p的值是
- **解析**:
- `p` 指向 `a[2]`,即 `30`。
- `--p` 使 `p` 向前移动一位,现在指向 `a[1]`,即 `20`。
- `*--p` 的值为 `20`。
- **答案**:B
### 3. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的结果是
- **解析**:
- `pa` 和 `pb` 分别指向 `a` 和 `b`。
- `scanf` 读入 `3` 和 `5` 分别赋值给 `a` 和 `b`。
- `*pa=a+b` 等同于 `a=a+b`,计算后 `a` 的值为 `8`。
- `*pb=a+b` 等同于 `b=a+b`,计算后 `b` 的值为 `13`。
- 最终输出 `a=8, b=13`。
- **答案**:C
### 4. 下列程序执行后的输出结果是
- **解析**:
- `pmul` 指向二维数组 `a` 的第一个元素。
- 通过 `pmul[i]=i+1` 循环赋值,将 `1` 至 `9` 赋给数组的每个元素。
- 输出 `a[1][2]` 即数组中第三个元素的值,即 `6`。
- **答案**:B
### 5. 有如下程序段 int *p,a=10,b=1; p=&a; a=*p+b;
- **解析**:
- `p` 指向 `a`。
- `a=*p+b` 等同于 `a=a+b`,计算后 `a` 的值为 `11`。
- **答案**:B
### 6. 下面程序的输出结果是
- **解析**:
- `p` 指向数组 `a` 的第一个元素。
- `*p` 获取 `a` 的第一个元素,即 `1`。
- `*p+9` 计算结果为 `10`。
- **答案**:C
### 7. 若有说明语句"int i,j =7,*p=&i;",则与i=j等价的语句是
- **解析**:
- `*p=*&j`:`*&j` 等价于 `j`,所以 `*p=*&j` 等价于 `*p=j`,即 `i=j`。
- **答案**:B
### 8. 若有说明语句"int a[10],*p=a;",对数组元素的正确引用是
- **解析**:
- `*(p+2)`:指针 `p` 加上一个偏移量 `2` 后取值,等同于 `a[2]`。
- **答案**:C
### 9. 执行语句"char a[10]={"abcd"},*p=a;"后,*(p+4)的值是
- **解析**:
- `*(p+4)` 访问 `a` 数组第 5 个位置的值。
- 数组 `a` 中 `'abcd'` 后跟一个终止符 `\0`。
- 因此,`*(p+4)` 的值为 `\0`。
- **答案**:C
### 10. 下列程序执行后的输出结果是
- **解析**:
- 函数 `func` 将 `a` 的值加 6 后赋给 `b[0]`。
- 主函数中 `a=0`,`b[0]=3`。
- 调用 `func` 后 `b[0]` 的值变为 `6`。
- **答案**:A
### 11. 下列程序的输出结果是
- **解析**:
- `func` 函数中 `b+=*a`,`a` 的值被传入 `func`。
- `main` 函数中 `a=2`,调用 `func` 后 `b` 的值变为 `4`。
- 再次调用 `func` 并累加后,`res` 的值为 `6`。
- **答案**:B
### 12. 下列程序的输出结果是
- **解析**:
- `fun` 函数先输出 `x` 和 `y` 的初始值。
- `main` 函数中 `x=1`,`y=2`。
- 调用 `fun` 时传入 `y` 和 `x` 的地址,输出 `21`。
- `fun` 改变 `x` 和 `y` 的值为 `3` 和 `4`,但主函数中 `x` 和 `y` 的值未改变。
- **答案**:2134