第5章 数组 练习题 学号: 姓名:
单选:
1. 下列数组说明中,正确的是().
A. int array[][4]; B. int array[][]; C. int array[][][5]; D. int array[3][];
2. 下列定义数组的语句中正确的是().
A. #define size 10 char str1[size],str2[size+2]; B. char str[]; C. int num['10'];
D. int n=5; int a[n][n+2]; 3. 下列定义数组的语句中不正确的是(). A. int a[2][3]={1,2,3,4,5,6}; B. int a[2][3]={{1},{4,5}}; C. int a[][3]={{1},{4}};
D.
int a[][]={{1,2,3},{4,5,6}};
4. 若输入ab,程序运行结果为().
main()
{ char a[2]; scanf(\
printf(\ }
A. a,b B. a, C. b,
D. 程序出错
5. 下列数组说明中,正确的是().
A. char str[]=\B. char str[]; str=\
C. char str1[5],str2[]={\D.
char str1[],str2[];str2={\strcpy(str1,str2);
6. 下列语句中,不正确的是().
A. static char a[2]={1,2}; B. static int a[2]={'1','2'}; C. static char a[2]={'1','2','3'}; D. static char a[2]={'1'}; 7. int a[10];合法的数组元素的最小下标值为().
A. 10 B. 9 C. 1 D.
0
8. char a[10];不能将字符串\存储在数组中的是
().
A. strcpy(a,\
B. a[0]=0;strcat(a,\C. a=\
D. int i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;
9. int i,j,a[2][3];按照数组a的元素在内存的排列次序,
不能将数1,2,3,4,5,6存入a数组的是().
A. for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1; B. for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1; C. for(i=0;i<6;i++)a[i/3][i%3]=i+1; D. for(i=1;i<=6;i++)a[i][i]=i; 10. char str[10]=\数组元素个数为().
A. 5 B. 6 C. 9 D.
10
11. 若char a[10];已正确定义,以下语句中不能从键盘
上给a数组的所有元素输入值的语句是().
A. gets(a);
B. scanf(\
C. for(i=0;i<10;i++)a[i]=getchar(); D.
a=getchar();
12. char a[]=\输出前5个字符的语
句是().
A. printf(\B. puts(a);
C. printf(\D.
a[5*2]=0;puts(a);
13. int a[10]; 给数组a的所有元素分别赋值为1、2、
3、……的语句是().
A. for(i=1;i<11;i++)a[i]=i; B. for(i=1;i<11;i++)a[i-1]=i; C. for(i=1;i<11;i++)a[i+1]=i; D.
for(i=1;i<11;i++)a[0]=1;
14. 以下程序段的输出结果为().
char c[]=\int i=0; do ;
while(c[i++]!='\\0'); printf(\
A. abc B. ab C. 2 D. 3
1
第5章 数组 练习题 学号: 姓名:
15. char a1[]=\将a1串连接到a2
串后面的语句是().
A. strcat(a2,a1); B. strcpy(a2,a1); C. strcat(a1,a2); D.
strcpy(a1,a2);
16. 对以下说明语句 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.
因为数组长度与初值的个数不相同,所以此语句不正确
17. 以下不正确的定义语句是().
A. double x[5]={2.0,4.0,6.0,8.0,10.0}; B. int y[5]={0,1,3,5,7,9}; C. char c1[]={'1','2','3','4','5'}; D.
char c2[]={'\\x10','\\xa','\\x8'};
18. 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一
维的大小是().
A. 2 B. 3 C. 4
D.
无确定值
19. 若二维数组a有m列,则在a[i][j]前的元素个数为
().
A. j*m+i B. i*m+j C. i*m+j-1 D. i*m+j+1
20. 若有说明:int a[3][4];则数组a中各元素().
A. 可在程序的运行阶段得到初值0 B. 可在程序的编译阶段得到初值0 C. 不能得到确定的初值
D.
可在程序的编译或运行阶段得到初值0
21. 设有数组定义: char array [ ]=\ 则数组
array所占的空间为().
A. 4个字节 B. 5个字节 C. 6个字节 D.
7个字节
22. 以下能正确定义数组并正确赋初值的语句是().
A. int N=5,b[N][N];
B. int a[1][2]={{1},{3}};
C. int c[2][]={{1,2},{3,4}}; D. int d[3][2]={{1,2},{34}};
23. 以下对二维数组a的正确说明是().
A. int a[3][] B. float a(3,4) C. double a[1][4] D.
float a(3)(4)
24. 若有说明:int a[10];则对a数组元素的正确引用是
().
A. a[10] B. a[3,5] C. a(5) D. a[10-10]
25. 以下能对一维数组a进行正确初始化的语句是().
A. int a[10]=(0,0,0,0,0) B. int a[10]={}; C. int a[]={0};
D. int a[10]={10*1};
26. 以下对一维整型数组a的正确说明是().
A. int a(10); B. int n=10,a[n];
C. int n; scanf(\
D.
#define SIZE 10 (换行) int a[SIZE];
27. 若有说明 int a[3][4];则对a数组元素的正确引用
是().
A. a[2][4] B. a[1,3] C. a[1+1][0] D.
a(2)(1)
28. 若有说明 int a[3][4];则a数组元素的非法引用是
().
A. a[0][2*1] B. a[1][3] C. a[4-2][0] D. a[0][4]
29. 以下能对二维数组a进行正确初始化的语句是().
A. int a[2][]={{1,0,1},{5,2,3}}; B. int a[][3]={{1,2,3},{4,5,6}}; C. int a[2][4]={{1,2,3},{4,5},{6}}; D.
int a[][3]={{1,0,1}{},{1,1}};
30. 若有说明: int a[3][4]={0};则下面正确的叙述是().
A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确
C. 数组a中各元素都可得到初值,但其值不一定
2
第5章 数组 练习题 学号: 姓名:
为0
D. 数组a中每个元素均可得到初值0 31. 若有说明: int a[][4]={0,0};则下面不正确的叙述是
().
A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1
C. 因为二维数组a中第二维大小的值除经初值
个数的商为1,故数组a的行数为1
D. 有元素a[0][0]和a[0][1]可得到初值0,其余元
素均得不到初值0
32. 在C语言中,引用数组元素时,其数组下标的数据
类型允许是().
A. 整型常量 B. 整型表达式
C. 整型常量或整型表达式 D.
任何类型的表达式
33. 以下程序段中,不能正确赋字符串(编译时系统会
提示错误)的是().
A. char s[10]=\B. char t[]=\C. char s[10];s=\
D. char s[10];strcpy(s,\ 34. 以下不能正确定义二维数组的选项是().
A. int a[2][2]={{1},{2}}; B. int a[][2]={1,2,3,4}; C. int a[2][2]={{1},2,3}; D.
int a[2][]={{1,2},{3,4}};
35. 假定int类型变量占用4个字节,其有定义:int
x[10]={0,2,4}; 则数组x在内存中所占字节数是(). A. 3 B. 6 C. 10 D. 40
36. 以下数组定义中不正确的是().
A. int a[2][3];
B. int b[][3]={0,1,2,3}; C. int c[100][100]={0};
D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 37. 下列数组声明语句中,正确的是().
A. int a[]={1,2,,4,5};
B. char a[5]={A,B,C,D,E}; C. int a[5]={1,2}; D.
char a[5]=\
38. 数组声明语句为\输入数组所有元素的语
句应为().
A. scanf(\B. for(i=0;i<6;i++) scanf(\C. for(i=0;i<6;i++) scanf(\D. for(i=0;i<6;i++) scanf(\39. 初始化多维数组的语句中,可以缺省的是().
A. 最后一个下标界 B. 第1个下标界 C. 第2个下标界 D.
以上都不是
40. 数
组声明为: char str1[20]=\调用函数\后,字符串str1的串长是(). A. 13 B. 15 C. 6 D. 7 41. 不正确的赋值或赋初值的方式是()
A. char str[]=\
B. char str[7]={'s','t','r','i','n','g'}; C. char str[10]; str=\
D. char str[7]={'s','t','r','i','n','g','\\0'}; 42. 程序中调用了库函数strcmp(),必须包含头文件()
A. math.h B. string.h C. ctype.h D.
stdlib.h
43. 在C语言中,引用数组元素时,其数组下标的数据
类型允许是()
A. 整型常量 B. 整型表达式
C. 整型常量或整型表达式 D.
任何类型的表达式
44. 对于所定义的二维数组a[2][3],元素a[1][2]是数组
的第()个元素
A. 3 B. 4 C. 5 D.
6
45. 若有说明:int a[20];,则对a数组元素的正确引用是
()
A. a[20] B. a[3,5]
3
第5章 数组 练习题 学号: 姓名:
C. a(5) D. a[10-10]
46. 若有说明:int a[3][4];,则对a数组元素的正确引用
是()
A. a[2][4] B. a[1,3] C. a[1+1][0] D.
a(2)(1)
47. 以下关于数组的描述正确的是()
A. 数组的大小是固定的,但可以有不同类型的数
组元素
B. 数组的大小是可变的,但所有数组元素的类型
必须相同
C. 数组的大小是固定的,所有数组元素的类型必
须相同
D. 数组的大小是可变的,可以有不同类型的数组
元素
48. 字符串\在存储单元中占()个字节.
A. 14 B. 15 C. 16 D.
17
49. 在执行int a[][3]={{1,2},{3,4}};语句后,a[1][2]的值
是()
A. 3 B. 4 C. 0 D.
2
50. 下面程序段的运行结果是()
char c[5]={'a','b','\\0','c','\\0'}; printf(\
A. a''b' B. ab C. ab c D. a,b
51. 下面程序的运行结果是()
char c[]=\printf(\
A. 14 B. 3 C. 9
D. 字符串中有非法字符,输出值不确定
52. C语言中,一维数组的下标的最小值是( )
A. 1
B. 0
C. 视说明语句而定 D. 无固定下限
53. 设有数组定义:char array[]=\则数组array
所占的空间为( )字节
A. 4个 B. 5个 C. 7个 D. 6个
54. 下列描述中不正确的是( )
A. 可以对整型数组进行整体输入、输出 B. 可以对字符型数组进行整体输入、输出 C. 字符型数组中可以存放字符串
D.
不能在赋值语句中通过赋值运算符\对字符型数组进行整体赋值
55. 阅读下面的初始化程序段:
char a[]=\
char b[]={'A','B','C','D','E','F'}; 则下面叙述正确的是()
A. a和b完全相同
B. a数组长度比b数组长 C. a和b不相同,a是指针数组 D. a和b只是长度相等
56. 下面能正确将字符串\进行完整赋值操作的
语句是( )
A. char s[3]={'B','o','y'}
B. char s[3]; s[0]='B';s[1]='o';s[2]='y'; C. char s[3]={\D.
char s[]=\
57. 在C语言中,一维数组的定义方式为:类型说明符
数组名().
A. [常量表达式] B. [整型表达式]
C. [整型常量]或[整型表达式] D.
[整型常量]
58. 以下不能对二维数组a进行正确初始化的语句是
().
A. int a[2][3]={0};
B. int a[][3]={{1,2},{0}};
C. int a[2][3]={{1,2},{3,4},{5,6}}; D.
int a[][3]={1,2,3,4,5,6};
59. 下列程序的运行结果为:()
include
4
第5章 数组 练习题 学号: 姓名:
{ char a[]=\ int i,j=0;
for(i=1;i<7;i++) if(a[j]
A. mogninr B. mo
C. morning D. morning;
main() { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0;
for(i=0;i<4;i++) s+=aa[i][1]; printf(\ }
程序运行后的输出结果是:()
A. 11 B. 19 C. 13 D. 20 60. 有以下程序
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 填空:
1. 执行语句char str[81]=\后,字符串str结束16. 合并字符串的库函数是【1】,只写函数名即可。
标志存储在str[【1】](在括号内填写下标值)中。 17. int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的2. C语言中,数组名是一个不可变的【1】量,不能值为【1】。
对它进行加减和赋值运算。 18. c语言中,数组元素的下标下限为【1】。 3. 数组在内存中占一连续的存储区,由【1】代表它19. c语言中,数组名是一个不可变的【1】量,不能
的首地址。 对它进行加、减和赋值运算。 4. C程序在执行过程中,不检查数组下标是否【1】。 20. 从键盘输入 1 2 3 4 5 6 7 8 9 执行后输出的结果是5. 若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 【1】。
main() 12 8 2 10 7 5 1 3该数组可用的最小下
{int a[3][3],sum=0; 标值是【1】。
6. 若有以下数组a,数组元素:a[0]~a[9],其值为9 4 for(i=0;i<3,i++)
for(j=0;j<3;j++) 12 8 2 10 7 5 1 3该数组可用的最大下
scanf(\标值是【1】。
7. 若有以下数组a,数组元素:a[0]~a[9],其值为9 4 printf(\
for( i=0; i<3; i++ ) sum = sum + a[i][i]; 12 8 2 10 7 5 1 3该数组中下标最大的
printf(\元素的值是【1】。
8. 若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 }
12 8 2 10 7 5 1 3该数组的元素中,数21. 若先后输入country和side,则下列程序运行结果值最小的元素的下标值是【1】。 为【1】。 9. 若有以下数组a,数组元素:a[0]~a[9],其值为 9 4 main()
{char s1[40],s2[20]; 12 8 2 10 7 5 1 3该数组的元素中,数
int i=0,j=0; 值最大的元素的下标值是【1】。
scanf(\10. C语言中,二维数组在内存中的存放方式为按【1】
scanf(\优先存放。
11. 定义int a[2][3];表示数组a中的元素个数是【1】个。 while(s1[i]!='\\0') i++;
while(s2[j]!='\\0') s1[i++]=s2[j++]; 12. 字符串的结束标志是【1】。
13. 求字符串长度的库函数是【1】,只写函数名即可。 s1[i]='\\0';
printf(\14. 复制字符串的库函数是【1】,只写函数名即可。
} 15. 字符串比较的库函数是【1】,只写函数名即可。
5