第4章 数组练习题答案

第4章 数组练习题

一、选择题

1. 在c语言中,引用数组元素时,其数组下标的数据类型允许是( )。 A)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式 2. 要说明一个有10个int元素的数组,应当选择语句( )。

A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3. 对以下说明语句的正确理解是( )。

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)因为数组长度与初值的个数不相同,所以此语句不正确

4. 已知:int a[10];则对a数组元素的正确引用是( )。

A) a[10] B) a[3.5] C) a(5) D) a[10-10] 5. 以下对一维整型数组a的正确说明是( )。

A) int a(10); B)int n=10,a[n]; C) int n; D)#define SIZE 10;

scanf(\int a[n];

6. 要定义一个int型一维数组art,并使其各元素具有初值89,-23,0,0,0,不正确的定义

语句是( )。

A) int art[5]={89,-23}; B) int art[ ]={89,-23};

C) int art[5]={89,-23,0,0,0}; D) int art[ ]={89,-23,0,0,0};

7. 在C语言中,二维数组元素在内存中的存放顺序是( )。

A) 按行存放 B)按列存放 C)由用户自己定义 D)由编译器决定 8. 以下对二维数组a的正确说明是 ( )。

A)int a[3][] B) float a(3,4) C) double a[1][4] D) float a(3)(4) 9. 已知:int a[3][4];则对数组元素引用正确的是( )。

A)a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1) 10. 已知:int a[3][4]={0};则下面正确的叙述是( )。

A)只有元素a[0][0]可得到初值0 B)此说明语句是错误的

C)数组a中的每个元素都可得到初值,但其值不一定为0 D)数组a中的每个元素均可得到初值0

11. 以下各组选项中,均能正确说明二维实型数组a的是 ( )。

A) float a[3][4]; B) float a(3,4); float a[][4]; float a[3][4];

float a[3][]={{1},{0}}; float a[][]={{0},{0}};

C) float a[3][4]; D) float a[3][4]; float a[][4]={{0},{0}}; float a[3][]; float a[][4]={{0},{0},{0}}; float a[][4]; 12. 已知:int a[][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是 ( )。

A)2 B)3 C)4 D)无确定值 13. 若二维数组a有m列,则在a[i][j]之前的元素个数为 ( )。

A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1 14. 要使字符数组str存放一个字符串\,正确的定义语句是( )。

A) char str[8]={'A','B','C','D','E','F','G','H'};

B) char str[8]=\;

C) char str[ ]={'A','B','C','D','E','F','G','H'}; D) char str[ ]=\;

15. 下面是对数组s的初始化,其中错误的是 ( )。

A) char s[5]={\C) char s[5]=\D) char s[5]=\ 16. 对两个数组a和b进行如下初始化 char a[]=\

char b[]={'A','B','C','D','E','F'}; 则以下叙述正确的是( )。

A) a与b数组完全相同 B) a与b长度相同

C) a和b中都存放字符串 D) a数组比b数组长度长 17. 下面程序的运行结果是 ( )。

char c[5]={'a','b','\\0','c','\\0'}; printf(\

A) 'a''b' B) ab C) ab c D) 以上三个答案均有错误 18. 下面程序段运行的结果是 ( )。 char s[]=\printf(\

A) a book! B) a bo

C) a boo D) 格式描述不正确,没有确定的输出 19. 合法的数组定义是 ( )。

A) int a[]=\

C) char a=\D) char a[]={'0','1','2','3','4','5'}; 20. 要使字符串数组STR含有\,\和\三个字符串,不正确的定义语句有( )。

A)char STR[ ][4]={\; B)char STR[ ][5]= {\; C)char STR[ ][6]= {\;

D)char STR[ ][7]={{'A','B','C','D','\\0'},\; 21. 有两个字符数组a、b,则以下正确的输入格式是 ( )。

A) gets (a,b); B) scanf (\

C) scanf (\ D) gets (\22. 判断字符串a和b是否相等,应当使用( )。 A) if (a==b) B) if (a=b)

C) if (strcpy(a,b)) D) if (strcmp(a,b)) 23. 下述对C语言字符数组的描述中错误的是( )。

A)字符数组可以存放字符串

B)字符数组的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符\对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 24. 运行下面程序段的输出结果是( )。 char s[12]=\printf(\

A) 12 B) 7 C) 6 D) 5 25. 函数调用strcat ( strcpy ( str1,str2 ), str3 )的功能是( )。

A)将字符串str1复制到字符串str2中,再连接到字符串str3之后 B)将字符串str1连接到字符串str2之后,再复制到字符串str3之后

C)将字符串str2复制到字符串str1中,再将字符串str3连接到字符串str1之后 D)将字符串str2连接到字符串str1之后,再将字符串str1复制到字符串str3之中 26. 有下面的程序段

char a[3],b[]=\

a=b;

printf(\则( )。

A)运行后将输出ch B)运行后将输出Ch C)运行后将输出chi D)编译出错 27. 下面描述正确的是( )。

A)两个字符串所包含的字符个数相同时,才能比较字符串 B)字符个数多的字符串比字符个数少的字符串大 C)字符串\与\相等 D)字符串\小于字符串\28. 下面程序段的运行结果是( )。 char c[]=\printf ( \

A) 14 B) 3 C) 9 D) 字符串中有非法字符,输出值不确定 29. 下面程序段的运行结果是( )。(其中~表示空格) char a[7]=\strcpy (a,b);

printf (\

A) ~ B) \\0 C) e D) f

30. 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#define N 10

void arrin(int x[N]) { int i=0; while(i

scanf(\}

在下划线处应填入的是( )。

A) x+i B)&x[i+1] C)x+(i++) D)&x[++i] 二、填空题

1. 构成数组的各个元素必须具有相同的 数据类型 。C语言中数组的下标必须是整正数、0

或 整型表达式 。如果一维数组的长度为n ,则数组下标的最小值为 0 ,最大值为 n-1 。

2. 在C语言中,一维数组的定义方式为:类型说说明符 数组名 [常量表达式] 。 3. 在C语言中数组名是一个 地址常量 ,不能对其进行加、减及赋值操作。

4. 已知数组T为一有10个单元的整型数组,正序输出T中的10个元素的值的语句为:

for (j=0;j<10;j++) printf(“%d”,T[j]);

下面的语句试图按相反的顺序显示输出T中的10个元素的相反数;请补充完整下面的语句: for( j=9 ; j>=0 ;j- -)printf(“%d”, T[j] );

5. 字符数组是用来存放 字符串 的数组。字符数组中一个元素存放 1 个字符。 6. 在C语言中存放字符'A'需要占用 1 个字节,存放字符串\需要占用 2 个字节。 7. 当需要接受用户从键盘输入的含有空格的字符串时,应使用gets()函数。 8. 以下语句的输出结果是 c:\\winxp\\time.exe 。

printf(\

9. 执行 “ static int b[5],a[][3]={1,2,3,4,5,6} ” 后,b[4]=( 0 ),a[1][2]=( 6 )。 10. 若在程序中用到 “ putchar() ” 函数时,应在程序开头写上包含命令

(#include),若在程序中用到 “ strlen() ” 函数时,应在程序开头写上包含命令(#include )。 三.完善程序题。

1. 下面的程序是求出数组a的两条对角线上的元素之和。

#include \

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4