chriselp 发表于 2015-2-2 21:08:11

<零基础学习C语言>第六章考核 第七题和第

7. 以下程序段的输出结果是 [单选、必答题   满分:5分我的得分:0分]
[*]2. 若有以下定义,则对数组a的元素的正确引用是 [单选、必答题   满分:5分我的得分:0分]
[*]int a, *p = a;

复制代码

A. *&a
B. *a+1
C. *(p+5)
D. *(a+2)
[*]
[*]
[*]int i, j;
[*]char array[] = {'I', 'l', 'f', 'i', 's', 'h', 'C', '\0'};
[*]i = sizeof(array);
[*]j = strlen(array);
[*]printf("%d %d", i, j);

复制代码

A. 9 9
B. 8 9
C. 1 8
D. 9 8


第二题的B为什么错呢?还有就是第七题貌似是8,7.


chriselp 发表于 2015-2-2 21:08:46

那个东西貌似格式弄错了....

chriselp 发表于 2015-2-2 21:09:26

2. 若有以下定义,则对数组a的元素的正确引用是 [单选、必答题   满分:5分我的得分:0分]
int a, *p = a;
复制代码
A. *&a
B. *a+1
C. *(p+5)
D. *(a+2)


7. 以下程序段的输出结果是 [单选、必答题   满分:5分我的得分:0分]
int i, j;
char array[] = {'I', 'l', 'f', 'i', 's', 'h', 'C', '\0'};
i = sizeof(array);
j = strlen(array);
printf("%d %d", i, j);
复制代码
A. 9 9
B. 8 9
C. 1 8
D. 9 8

牡丹花下死做鬼 发表于 2015-2-7 14:27:01

第一个 D是对的B *a 是的 但 + 1 是对a数组的第一个元素+1赋值

第二个 可能是答案错了 我也觉得是 8 7 而且我输入代码运行的结果也是 8 7

lixiaoshuai 发表于 2015-2-7 16:59:27

1题4楼正解,
2题是8,7.
sizeof是实际大小:8,strlen是字符串大小
strlen是遇到\0则终结,故为7.^^

weiqi7777 发表于 2015-2-9 20:50:32

答案应该有误,

第一题,答案是最后一个,A和C都超过数组范围了。。。
B是对数组第一个元素加1操作,然后得到这个数丢弃

第二题应该是8,7
sizeof是计算整个字符串占用空间,最后一个\0也是要计算的。
strlen计算不算最后一个\0

1170802693 发表于 2015-2-12 13:02:07

B答案如果改为*(a+1)就是正确的

傲天 发表于 2015-2-23 13:57:04

第一题,答案是最后一个,A和C都超过数组范围了,
B是对数组第一个元素加1操作,只有D是第3个元素。

第二题应该是D
sizeof是计算整个字符串占用空间,'\0'也是一个字符,是用单引号括起来的,所以长度为9.
strlen自然就是8了。
页: [1]
查看完整版本: <零基础学习C语言>第六章考核 第七题和第