第七章 数组 下载本文

第七章 数组

数组是程序设计语言中最基本,最重要的组成部分,本章的习题将从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) 不能得到确定的初值