第七章 数组
数组是程序设计语言中最基本,最重要的组成部分,本章的习题将从C语言数组的基本概念出发,讨论C语言数组的特点和使用方法,并通过典型的例题和常见算法研究数组的一般应用,本章的主要内容包括: ● 数组基本概念。包括:数组的定义,数组的类型,数组维数,体积,数组元素和数组下标的概念,数组
说明,对数组进行初始化的方法,多维数组中元素的排列次序及初始化等问题。
● 字符型数组。包括:字符型数组与其它数组的区别,字符串及其特点,对字符型数组进行初始化,使用
不同的库函数输入输出字符串,对字符串的简单处理(求串长,串复制,串连接,串比较,串反向等) 等。
● 数组与函数之间的关系。包括:将数组作为组与函数之间进行传递等。 ● 常见的使用数组的算法。包括:排序算法,查找算法等。
7.1 选择题
【7.1】错误的说明语句是 。
A) static char word[ ]={‘T’,’u’,’r’,’b’,’o’,’\\0’}; B) static char word[ ]={“Turbo\\0”}; C) static char word[ ]=”Turbo\\0”; D) static char word[ ]=‘Turbo\\0’;
【7.2】已知:char s[5],c;register int b;则调用函数scanf的正确语句是 。
A) scanf(“%s%c”,s,c); B) scanf(“%d%c,&b,&c); C) scanf(“%d%c”,b,&c); D) scanf(“%s%c”,s,&c);
【7.3】要说明一个有10个int元素的数组,应当选择语句 。
A) int a [10]; B) int a[2,5]; C) int a [ ]; D) int *a[10];
【7.4】合法的数组说明语句是 。
A) int a[ ]=”string”;
B) int a[5]={0,1,2,3,4,5,}; C) char a=”string”;
D) char a[]={0,1,2,3,4,5,};
【7.5】在下述对C语言字符数组的描述中错误的是 。
A) 字符数组可以存放字符串
B) 字符数组中的字符串可以进行整体输入输出
C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D) 字符数组的下标从0开始
【7.6】调用strlen(“abcd\\0ef\\0g”)的返回值为 。
A) 4 B) 5 C) 8 D)9
【7.7】 若有以下语句, 则正确的描述是 。 static char x[ ]=”12345”;
static char y[ ]={‘1’,’2’,’3’,’4’,’5’};
A) x数组和y数组的长度相同 B) x数组长度大于y数组长度 C) x数组长度小于y的数组长度 D) x数组等价于y数组
【7.8】已知:char str1[10],str2[10]={“books”};则在程序中能够将字符串“books”赋给数组str1的正确语句是 。
A) str1 = {“Books”}; B) strcpy (str1,str2); C) str1 = str2; D) strcpy (str2,str1);
【7.9】以下程序段的输出是 。
static char a[ ] = “-12345”; int k=0,symbol, m;
if (a[k]==‘+’|| a[k]==‘-’) symbol = (a[k++]==‘+’) ? 1:-1; for (m=0; a[k]>=‘0’&& a[k]<=‘9’;k++) m = m * 10 +a[k]-’0’;
printf(“number=&d\\n”,symbol*m); A) number = -12345 B) number = 12345 C) number = -1000 D) number = 1000
【7.10】若用数组名作为函数调用时的实参,则实际上传递给形参的是 。
A) 数组首地址 B) 数组的第一个元素值 C) 数组中的全部元素的值 C) 数组元素的个数
【7.11】已知:char str1[20]=”abcde”,str2[20]=”xyz”;则执行语句: printf(“&d”,strlen(strcpy(str1,str2))); 输出结果是 。
A) 9 B) 3 C) 5 D) 8
【7.12】下面关于字符串的说明中,错误的是 。
A) char str[7]=”FORTRAN”;
B) char str[ ]=”FORTRAN”; C) char *str =”FORTRAN”;
D) char str[ ]={‘F’,’0’,’R’,’T’, ‘R’,’A’,’N’,’\\0’};
【7.13】已知:
int i, x[3] [3] = {1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 。 for (i=0; i<3; i++)
printf (“&d”, x[i] [2-i] );
A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9
【7.14】已知:char str[ ]=”ab\\n\\012\\\\\\””;则执行语句: printf(“&d”,strlen(str)); A) 3 B) 4 C) 6 D) 12
【7.15】在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A) 整型常量 B) 整型表达式
C) 整型常量或整型表达式 D) 任何类型的表达式
【7.16】以下对一维整型数组a的正确说明是 。
A) int a(10); B) int n=10,a[n]; C) int n;
scanf(“&d”,&n); int a[n]; D) #define SIZE 10
int a[SIZE];
【7.17】已知:int a[10];则对a数组元素的正确引用是 。 A) a[10] B) a[3.5]
C) a(5) D) a[10-10]
【7.18】在C语言中,一维数组的说明方式为: 类型说明符 数组名 。
A) [常量表达式] B) [整型表达式]
C) [整型常量]或[整型表达式] D) [整型变量]
【7.19】以下对外部的一维数组a进行正确初始化的语句是 。
A) int a[10]=(0,0,0,0,0) ; B) int a[10]={ };
C) int a[ ]={0}; D) int a[10]={10*1};
【7.20】以下对二维数组a的正确说明是 。
A) int a[3] [ ]; B) float a(3,4); C) double a[1] [4]; D) float a(3) (4);
【7.21】已知: int a[3][4];则对数组元素引用正确的是 。 A) a[2][4] B) [1,3] C) a[1+1][0] D) a(2) (1)
【7.22】已知:int a[3][4];则对数组元素的非法引用是 。 A) a[0][2*1] B) a[1][3] C) a[4-2][0] D) a[0][4]
【7.23】以下能对外部的二维数组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}};
【7.24】以下不能对二维数组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};
【7.25】已知:static int a[3][4]={0};则下面正确的叙述是 。
A) 只有元素a[0][0]可得到初值0 B) 此说明语句是错误的
C) 数组a中每个元素都可得到初值,但其值不一定为0 D) 数组a中每个元素均可得到初值0
【7.26】已知在函数的外面有: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
【7.27】已知:static int a[3][4];则数组a中各元素 。
A) 可在程序的运行阶段得到初值0 B) 可在程序的编译阶段得到初值0 C) 不能得到确定的初值