习题6(第七章)数组 下载本文

第七章 数组

7.1 选择题

【题7.1】在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。 A)整型常量 B)整型表达式

C)整型常量或整型表达式 D)任何类型的表达式

【题7.2】以下对一维整型数组a的正确说明是 D 。

A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n];

【题7.3】若有说明:int a[10];则对a数组元素的正确引用是 D 。 A)a[10] B)a[3.5] C)a(5) D)a[10-10]

【题7.4】在C语言中,一维数组的定义方式为:类型说明符 数组名 A ; A)[常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[整型常量]

【题7.5】以下能对一维数组a进行正确初始化的语句是 C 。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]={10*1};

【题7.6】以下对二维数组a的正确说明是 C 。

A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4);

【题7.7】若有说明:int a[3][4];则对a数组元素的正确引用是 C 。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1)

【题7.8】若有说明:int a[3][4];则对a数组元素的非法引用是 D 。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]

【题7.9】以下能对二维数组a进行正确初始化的语句是 B 。

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.10】以下不能对二维数组a进行正确初始化的语句是 C 。

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.11】若有说明:int a[3][4]={0};则下面正确的叙述是 D 。

A) 只有元素a[0][0]可得到初值0 B) 此说明语句不正确

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

【题7.12】若有说明:int a[][4]={0,0};则下面不正确的叙述是 D 。

A) 数组a的每个元素都可得到初值0 B) 二维数组a的第一维大小为1

C) 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行

数为1

D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

【题7.13】若有说明:int a[3][4];则数组a中各元素 B。

A) 可在程序的运行阶段得到初值0 B) 可在程序的编译阶段得到初值0 C) 不能得到确定的初值

D) 可在程序的编译或运行阶段得到初值0

【题7.14】以下各组选项中,均能正确定义二维实型数组a的选项是 C 。 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]; static float a[][4]={{0},{0}}; float a[3][]; auto float a[][4]={{0},{0},{0}}; float a[][4];

【题7.15】下面程序 A (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[3]={3*0}; 4 int i; 5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“%d\\n”,a[0]); 8 }

A)第3行有错误 B)第7行有错误 C)第5行有错误 D)没有错误

【题7.16】下面程序 C (每行程序前面的数字表示行号)。

1 main() 2 { 3 float a[10]={0.0}; 4 int i; 5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<10;i++) a[0]=a[0]+a[i]; 7 printf(“%f\\n”,a[0]); 8 }

A)没有错误 B)第3行有错误 C)第5行有错误 D)第7行有错误

【题7.17】下面程序中有错误的行是 D (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[3]={1}; 4 int i; 5 scanf(“%d”,&a); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“a[0]=%d\\n”,a[0]); 8 }

A)3 B)6 C)7 D)5

【题7.18】下面程序 D (每行程序前面的数字表示行号)。 1 main() 2 { 3 float a[3]={0}; 4 int i; 5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 7 printf(“%d\\n”,a[0]); 8 }

A)没有错误 B)第3行有错误 C)第5行有错误 D)第6行有错误

【题7.19】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 D 。

(假设a[0][0]位于数组的第一个位置上。)

A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1

【题7.20】对以下说明语句的正确理解是 B 。 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) 因为数组长度与初值的个数不相同,所以此语句不正确

【题7.21】以下不正确的定义语句是 B 。

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’};

【题7.22】若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 B 。 A)2 B)3 C)4 D)无确定值

【题7.23】若二维数组a有m列,则在a[i][j]前的元素个数为 B 。 A)j*m+i B)i*m+j C)i*m+j-1 D)i*m+j+1

【题7.24】定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是 A 。 for(k=0;k<3;k++) printf(“%d”,a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7

【题7.25】若有以下程序段: ? ? int a[]={4,0,2,3,1}; i,j,t; for(i=1;i<5;i++) { t=a[i]; j=i-1; while(j>=0&&t>a[j]) { a[j+1]=a[j]; j--; } a[j+1]=t; } ? ? 则该程序段的功能是 B 。

A) 对数组a进行插入排序(升序) B) 对数组a进行插入排序(降序) C) 对数组a进行选择排序(升序) D) 对数组a进行选择排序(降序)

【题7.26】以下正确的定义语句是 D 。

A) int a[1][4]={1,2,3,4,5}; B) float x[3][]={{1},{2},{3}};

C) long b[2][3]={{1},{1,2},{1,2,3}}; D) double y[][3]={0};

【题7.27】下面程序的运行结果是 C 。