大家做几道c语言的选择题

若有说明:int a[10]; 则对a数组元素的正确引用是()
A.a[10] B.a[3.5] C.a[5] D.a[10-10]

(我知道AB不选 CD 选哪个?为什么?)

设有如下数组定义,则正确的叙述为()
char x[ ] = { "abcdefg" };
char y[ ] = { 'a','b','c','d','e','f','g' };
A.数组x和数组y等价 B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度 D.数组x的长度小于数组y的长度

下列数组说明语句中,正确的是()
A.char a [3][ ]={'abc','1'}; B.char a[ ][3]={'abc','1'};
C.char a [3][ ]={'a',"1"}; D.char a[ ][3]={"a","1"};

分别说明选哪个 为什么

    C;因为int a[10]定义为一个10个int的数组,范围为0-9,因此A答案直接排除;B和D都是非法的引用,所以答案是C

    C;因为x数组是以一个整体的字符串作来存储,所以其真实长度要加上1,因为字符串后尾有\0(空字符)表示字符串的结束,而y是以单个字符来存储,不存在x的情况

    C;字符串需要用“”来表示而不是''所以A,B直接排除,D是因为其为一个指向3个字符的数组,所以赋予其字符是非法的。

追问

2题中计算字符串的长度不是不计算'\0'的吗?计算字符串存储字节数,才把'\0'计算在内
3题A和C都是错的 因为二维数组中第一维的长度可以缺省 但第二维的长度必须指明

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-01
1
CD应该都对, a[5]不说了,a[10-10]就是a[0]也没问题
2
C x字符串最后有字符'\0'
3
D 二维数组,后面的赋值也应为二维,大括号一个维度,字符串一个维度追问

1.这不是多选题亲
2题中计算字符串的长度不是不计算'\0'的吗?计算字符串存储字节数,才把'\0'计算在内
3你说啥意思啊我不明白

追答

1 确实都对,真心不骗你,不信你可以编译试试,亲测没问题
2 字符串的length不包含'\0',但是数组的空间占用要包含'\0'
3 就是说字符串"abc"的本质是字符数组{'a','b','c'},如果给二维数组赋初值,那么右边也应该是个二维数组,简单的理解就是一维数组的一维数组,另外字符串长度可以短于对应数组长度,也就是说char a[100]="a"是合法的,只要是用双引号,即使只有一个字符也当做字符串看待

追问

第三题 B怎么不对了

追答

B 首先是'abc'单引号只能是字符,不能是字符串;其次是右边{'c','c'}的结构是一维数组,不能幅值给二维数组,如果一定要这样的话,需要用{{'c'},{'c'}}的二维数组进行幅值,考虑到字符串相当于一维数组,如果不关心'\0'的话也可以使用{"c","c"}

本回答被提问者采纳
相似回答