一、判断题(每小题2分,共20分)
1. C++中允许对数组的大小作动态定义,即可用变量定义数组的大小。 答案:F。
2. 字符数组不要求它的最后一个字符为'\\0',甚至可以不包含'\\0'。 答案:T
3. 在对全部数组元素赋初值时,可以不指定数组长度。 答案:F
4. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素。 答案:T
5. char c[]={\与char c[]=\等价。 答案:T
6. 设已有说明: char c1[10],c2[10]; 下面程序片段是合法的。c1={\ c2=c1; 答案:F
7. 字符数组初始化如:char aStr[]={\不可省略花括弧,简单地写为char aStr[]=\答案:F
8. 对数组元素赋初值称为数组的初始化,例如: int a[10];
a={1,3,5,6,7}; 答案:F
9. 如果数组的元素类型是字符型(char),则此数组就是字符数组。字符数组的每个元素只能存放一个字符(存放字符的ASCII代码)。 答案:T
10. C++中数组的起始下标为0,最大下标值比常量表达式小一。 答案:T
二、选择题 (每题3分,共45分)
1. 以下对一维数组a的正确定义是( )。
A.char a(10); B.int a[ ]; C.int k=5, a[k];
D.char a[ ]={'a', 'b', 'c'};
答案:D
2. 下面关于C++字符数组的叙述中,错误的是( )。
A.字符数组可以存放字符串
B.字符数组的字符可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.可以用关系运算符对字符数组中的字符比较大小
答案:C
3. 下面程序段的运行结果是( )。
char x[5]={'a', 'b', '\\0', 'c', '\\0'};
cout< A.'a''b' B.ab C.ab c D.abc 答案:B 4. 下面关于数组的叙述中,正确的说法是( )。 A.在定义一个数组时必须指定数组长度 B.必须用常量表达式来定义一个数组的长度 C.对数组进行初始化时大括号中的数据个数必须和数组的长度相同 D.定义一个一维数组时必须对数组进行初始化 答案:B 5. 在数组中,数组名表示( )。 A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址 答案:A 6. 若有以下说明,则数值为 4 的表达式是( )。 int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ; A.a[g-c] B.a[4] C. a['d'-'c'] D. a['d'-c] 答案:D 7. 下列语句中,正确的是 ( )。 A. char a[3][ ]={'abc', '1'}; B. char a[ ][3] ={'abc', '1'}; C. char a[3][ ]={'a', \D. char a[ ][3] ={ \答案:D 8. 字符串的长度是( ) A.串中不同字符的个数 B.串中不同字母的个数 C.串中所含字符的个数且字符个数大于零 D.串中所含字符的个数 答案:D 9. 下面关于数组的初绐化正确的是( ) A.char str[]={′a′,′b′,′c′}; B.char str[2]={′a′,′b′,′c′}; C.char str[2][3]={{′a′,′b′},{′c′,′d′},{′e′,′ f′}}; D.char str()={′a′,′b′,′c′}; 答案:A 10. 设有数组定义:char array[]=″China″;,则数组array所占的空间为( ) A.4个字节 B.5个字节 C.6个字节 D.7个字节 答案:C 11. 若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)( ) A.i*m+j B.j*m+i C.i*m+j-1 D.i*m+j+1 答案:A 12. 以下程序段的输出结果是( ) void main() { char x=0x41; ?cout< A.41 B.65 C.A D.B 答案:C 13. 对以下说明语句的正确理解是( ) int a[10]={6,7,8,9,10}; A.将5个初值依次赋给a[1]至a[5] B.将5个初值依次赋给a[0]至a[4] C.将5个初值依次赋给a[6]至a[10] D.因为数组长度与初值的个数不相同,所以此语句不正确。 答案:B 14. 下面哪一项是不正确的字符串赋值或赋初值的方式( )。 A. char *str; str=\ B. char str[7]={'s','t','r','i','n','g'}; C. char str1[10];str1=\ D. char str1[]=\答案:C 15. 设有定义:char s[12]=\则cout< A. 6 B. 7 C. 11 D. 12 答案:A 三、程序填空题 (本大题35分) 1. 本题分值:每空3分,共6分。 题目描述:设有一矩阵a要求这一矩阵的主对角线之和,请将未完成的部分填入,使之完整。 代码: #include int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if ( __(1)__) sum=sum+__(2)__; cout< 答案: (1) i==j (2) a[i][j] 2. 本题分值:每空2分,共10分。 题目描述:从键盘输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请将未完成的部分填入,使之完整。 代码: #include int a[5],max,min,i,j,k; for(i=0;i<5;i++) cin>>a[i]; min=a[0]; k=0; for(i=1;i<5;i++) //寻找最小数及其位置 if (a[i] min=a[i]; __(1)__; //记住其最小数所在位置k } max=a[0]; j=0; for (i=1;i<5;i++) //寻找最大数及其位数 if (a[i]>max) { max=a[i]; __(2)__; } a[k]= __(3)__; __(4)__; cout< cout<<__(5)__< (4) a[j]=min (5) j 3. 本题分值:每空3分,共9分。 题目描述:将数组的各个元素倒过来存储。例如,a的10个元素分别为:1、12、-32、64、15、26、3、8、9、4,作逆序处理后其值为:4、9、8、3、26、15、64、-32、12、1。 代码: