第七章数组 7.1选择题 【题7.1】在C语言中,引用数组元素时,其数组下标的数据类型允许是 A)整型常量 B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题7.2】以下对一维整型数组a的正确说明是 A) int a(10) B) int n=10, a[nI c) int n: D) #define SIzE 10 scanf(“%d”,&n); int a[size] int a[nl 【题7.3】若有说明:inta[10];则对a数组元素的正确引用是 A)a[10]B)a[3.5]C)a(5)D)a[10-10 【题7.4】在C语言中,一维数组的定义方式为:类型说明符数组名 A)[常量表达式] B)[整型表达式] C)[整型常量]或[整型表达式]D)[整型常量 【题7.5】以下能对一维数组a进行正确初始化的语句是 A)inta[10]=(0,0,0,0,0) B)inta[10]={} C)int a[=[OF D)inta[10]={10*1}; 【题7.6】以下对二维数组a的正确说明是 A) int a[3l0 B) float a (3, 4) C) double a[1][4] D)float a (3)(4) 【题7.7】若有说明:inta[3][4];则对a数组元素的正确引用是 A)a[2][4]B)a[1,3]C)a[1+1][0]D)a(2)(1) 【题7.8】若有说明:inta[3][4];则对a数组元素的非法引用是 A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4] 【题7.9】以下能对二维数组a进行正确初始化的语句是 A)inta[2][]={{1,0,1},{5,2,3} B)inta[][3]={1,2,3},{4,5,6} C)inta[2][4]={{1,2,3},{4,5},{6}} D)inta[][3]={{1,0,1},},{1,1} 【题7.10】以下不能对二维数组a进行正确初始化的语句是
第七章 数组 7.1 选择题 【题 7.1】在 C 语言中,引用数组元素时,其数组下标的数据类型允许是 。 A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式 【题 7.2】以下对一维整型数组 a 的正确说明是 。 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 数组元素的正确引用是 。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题 7.4】在 C 语言中,一维数组的定义方式为:类型说明符 数组名 ; A)[常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[整型常量] 【题 7.5】以下能对一维数组 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.6】以下对二维数组 a 的正确说明是 。 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 数组元素的正确引用是 。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题 7.8】若有说明:int a[3][4];则对 a 数组元素的非法引用是 。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题 7.9】以下能对二维数组 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.10】以下不能对二维数组 a 进行正确初始化的语句是
A)inta[2][3]={0)}; B)inta[][3]={{1,2},{0} C)inta[2][3]={1,2},{3,4},{5,6}} D)inta[][3]={1,2,3,4,5,6}; 【题7.11】若有说明:inta[3][4]={0};则下面正确的叙述是 A)只有元素a[O][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 【题7.12】若有说明:inta[[4]={0,0};则下面不正确的叙述是 A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1 C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行 数为1 D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 【题7.13】若有说明:inta[3][4];则数组a中各元素 A)可在程序的运行阶段得到初值0 B)可在程序的编译阶段得到初值0 C)不能得到确定的初值 D)可在程序的编译或运行阶段得到初值0 【题7.14】以下各组选项中,均能正确定义二维实型数组a的选项是 A) float a[3][4] B)float a(3, 4) float a[[4] float a[3][4] float a[3][]={{},0}} float a[][]={0};{0} C)float a[3][4] ))float a[3][4] static float a[[4]=[[01, (0J) float a[3]0 auto float a[[4]=[01, 101, 101); float a[[4] 【题7.15】下面程序 (每行程序前面的数字表示行号) 3 float a[3]={3*0}; 4 5for(i=0;i<3;i++) scanf(“%d”,&a[i]) 6for(i=1;i<3;i++)a[0]=a[0]+a[i] 7 printf(“%dn”,a[0]) A)第3行有错误 B)第7行有错误 C)第5行有错误 D)没有错误 【题7.16】下面程序 (每行程序前面的数字表示行号)
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};则下面正确的叙述是 。 A) 只有元素 a[0][0]可得到初值 0 B) 此说明语句不正确 C) 数组 a 中各元素都可得到初值,但其值不一定为 0 D) 数组 a 中每个元素均可得到初值 0 【题 7.12】若有说明: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.13】若有说明:int a[3][4];则数组 a 中各元素 。 A) 可在程序的运行阶段得到初值 0 B) 可在程序的编译阶段得到初值 0 C) 不能得到确定的初值 D) 可在程序的编译或运行阶段得到初值 0 【题 7.14】以下各组选项中,均能正确定义二维实型数组 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]; static float a[][4]={{0},{0}}; float a[3][]; auto float a[][4]={{0},{0},{0}}; float a[][4]; 【题 7.15】下面程序 (每行程序前面的数字表示行号)。 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】下面程序 (每行程序前面的数字表示行号)
1 maino float a[10]={0.0} int 1 5for(i=0;i<3;i++) scanf(“%d”,&a[i]) 6for(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】下面程序中有错误的行是 (每行程序前面的数字表示行号) 1 maino float a[3]=[1] int 1 6for(i=1;i<3;i++)a[0]=a[0]+a[i] 7 printf(“a[0]=%d\n”,a[0]) 8} B)6 D) 【题7.18】下面程序 (每行程序前面的数字表示行号) 2 3 float a[3]=(01 4 5for(i=0;i<3;i++) scanf(“%d”,&a[i]) 6for(i=1;i<4;i++)a[0]=a[0]+a[i] 7 printf(“%d\n”,a[0]) A)没有错误 B)第3行有错误 C)第5行有错误 D)第6行有错误 【题7.19】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 (假设a[0][0]位于数组的第一个位置上。) A)i=m+j B)j*+i C)i*m+j-1 D)i**m+j+ 【题7.20】对以下说明语句的正确理解是 nta[10]={6,7,8,9,10}; A)将5个初值依次赋给a[]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确
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】下面程序中有错误的行是 (每行程序前面的数字表示行号)。 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】下面程序 (每行程序前面的数字表示行号)。 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]在数组中位置的公式为 。 (假设 a[0][0]位于数组的第一个位置上。) A)i*m+j B)j*m+i C)i*m+j-1 D)i*m+j+1 【题 7.20】对以下说明语句的正确理解是 。 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】以下不正确的定义语句是 A) double x[5]={2.0,4.0,6.0,8.0,10.0} B)inty[5]={0,1,3,5,7,9 C) char cl[]={‘1’,‘2’,‘3 D) char c2[]={‘\x10’,‘xa’,“\x8'}; 【题7.22】若有说明:inta][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 A)2 B)3 C)4 D)无确定值 【题7.23】若二维数组a有m列,则在a[i][j前的元素个数为 A)j *mti B) i*m+j C)i*m+j-1 D)im+j+1 【题7.24】定义如下变量和数组: inta[3][3]={1,2,3,4,5,6,7,8,9} 则下面语句的输出结果是 for(k=0;k=0&&t>a[j]) a[+1]=a[j];j--;} 则该程序段的功能是 A)对数组a进行插入排序(升序) B)对数组a进行插入排序(降序) C)对数组a进行选择排序(升序) D)对数组a进行选择排序(降序) 【题7.26】以下正确的定义语句是 A)inta[1][4]={1,2,3,4,5} B) float x[3]0]={{},{2},{3}}; C) long b[2][3]={{1},{1,2},{1,2,3}; D)double y[[3]=01 【题7.27】下面程序的运行结果是
【题 7.21】以下不正确的定义语句是 。 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 数组第一维的大小是 。 A)2 B)3 C)4 D)无确定值 【题 7.23】若二维数组 a 有 m 列,则在 a[i][j]前的元素个数为 。 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}; 则下面语句的输出结果是 。 for(k=0;k=0&&t>a[j]) { a[j+1]=a[j]; j--; } a[j+1]=t; } … … 则该程序段的功能是 。 A) 对数组 a 进行插入排序(升序) B) 对数组 a 进行插入排序(降序) C) 对数组 a 进行选择排序(升序) D) 对数组 a 进行选择排序(降序) 【题 7.26】以下正确的定义语句是 。 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】下面程序的运行结果是
for(i=1;i3)%5 A)-40404 )-40403 C)-40443 D)-40440 【题7.29】下面是对s的初始化,其中不正确的是 A) char s[5]={“abc” B) char s[5]={‘a’,“b’,‘c’} C) char s[5]=“” D) char s[5]=“ abcdef”; 【题7.30】下面程序段的运行结果是 har c[5]=t printf(“%s”,c) b’B)abC)abc 【题7.31】对两个数组a和b进行如下初始化 char a[]=“ ABCDEF” char b[]={‘A’,‘B’,“C’,“D’,‘E
main() { int a[6][6],i,j; for(i=1;i3))%5; printf(“%2d”,a[i]); } } A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0 【题 7.29】下面是对 s 的初始化,其中不正确的是 。 A)char s[5]={“abc”}; B)char s[5]={‘a’,‘b’,‘c’}; C)char s[5]=“”; D)char s[5]=“abcdef”; 【题 7.30】下面程序段的运行结果是 。 char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’}; printf(“%s”,c); A)‘a’‘b’ B)ab C)ab c 【题 7.31】对两个数组 a 和 b 进行如下初始化 char a[]=“ABCDEF”; char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’};
则以下叙述正确的是 A)a与b数组完全相同 B)a与b长度相同 C)a和b中都存放字符串D)a数组比b数组长度长 【题7.32】有两个字符数组a、b,则以下正确的输入格式是 C) scanf(“%s%s”,&a,&b);D)gets(“a”),set(“b”); 【题7.33】有字符数组a[80]和b[80],则正确的输出形式是 A) puts(a, b) B) printf(“%s%s”,a[],b[]) C) putchar(a, b) D)puts(a), puts(b) 【题7.34】下面程序段的运行结果是 char a [7]=“ abcdef”; char b[4]=“ABC” strcpy(a, b) printf(“%c”,a[5]); A)空格B)0 c)e D)f 【题7.35】有下面的程序段 char a[3],b[]=“ China” printf(“%s”,a) 则 A)运行后将输出 China B)运行后将输出Ch C)运行后将输出Chi D)编译出错 【题7.36】下面程序段的运行结果是 char c[]=“\ t\v\\\Will\n” printf(“%d”, strlen(c)); A)14B)3C D)字符串中有非法字符,输出值不确定 【题7.37】判断字符串a和b是否相等,应当使用 A) if(a=b) B) if(a=b) C) if(strcpy(a, b)) D)if(strcmp(a, b)) 【题7.38】判断字符串s1是否大于字符串s2,应当使用 A) if(s1>s2) if(strcmp(sl, s2)) C)if(strcmp(s2, s1)>0) D) if(strcmp(sl, s2)>0) 【题7.39】下面程序段是输出两个字符串中对应字符相等的字符。请选择填空 char x[]=“ programmin char y[]=“ Fortran
则以下叙述正确的是 。 A)a 与 b 数组完全相同 B)a 与 b 长度相同 C)a 和 b 中都存放字符串 D)a 数组比 b 数组长度长 【题 7.32】有两个字符数组 a、b,则以下正确的输入格式是 。 A)gets(a,b); B)scanf(“%s %s”,a,b); C)scanf(“%s %s”,&a,&b); D)gets(“a”),get(“b”); 【题 7.33】有字符数组 a[80]和 b[80],则正确的输出形式是 。 A)puts(a,b); B)printf(“%s %s”,a[],b[]); C)putchar(a,b); D)puts(a),puts(b); 【题 7.34】下面程序段的运行结果是 。 char a[7]=“abcdef”; char b[4]=“ABC”; strcpy(a,b); printf(“%c”,a[5]); A)空格 B)\0 C)e D)f 【题 7.35】有下面的程序段 char a[3],b[]=“China”; a=b; printf(“%s”,a); 则 。 A)运行后将输出 China B)运行后将输出 Ch C)运行后将输出 Chi D)编译出错 【题 7.36】下面程序段的运行结果是 。 char c[]=“\t\v\\\0will\n”; printf(“%d”,strlen(c)); A)14 B)3 C)9 D)字符串中有非法字符,输出值不确定 【题 7.37】判断字符串 a 和 b 是否相等,应当使用 。 A)if(a==b) B)if(a=b) C)if(strcpy(a,b)) D)if(strcmp(a,b)) 【题 7.38】判断字符串 s1 是否大于字符串 s2,应当使用 。 A)if(s1>s2) B)if(strcmp(s1,s2)) C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0) 【题 7.39】下面程序段是输出两个字符串中对应字符相等的字符。请选择填空。 char x[]=“programming”; char y[]=“Fortran”; int i=0;
while(x[i]!=‘0’&&y[i]!=“10,) if(x[i]==y[i]) printf(“%c”,【1】) else itt 【1】A)x[i++]B)y[+i]C)x[i]D)y[i] 【题7.40】下面描述正确的是 A)两个字符串所包含的字符个数相同时,才能比较字符串 B)字符个数多的字符串比字符个数少的字符串大 )字符串“STOP”与“STOP”相等 D)字符串“That”小于字符串“The” 【题7.41】下述对C语言字符数组的描述中错误的是 A)字符数组可以存放字符串 B)字符数组的字符串可以整体输入、输出 C)可以在赋值语句中通过赋值运算符“≡”对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 【题7.42】有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规 律插入到a中。请选择填空。 #include maino hara[20]=“ cehikngtw”; char s[]=“fbla” for(k=0;s[k]!=‘0’;k+) while(s[k]>=a[j]&&a[j]!=“0’)j+; for(【1】)【2】 alj]=s[k] (11 A) i=strlen(a)+k: i>=j; i-- B)i=strlen(a): i>=j:i C)i=j: i
while(x[i]!=‘\0’&&y[i]!= ‘\0’) { if(x[i]==y[i]) printf(“%c”,【1】); else i++; } 【1】 A)x[i++] B)y[++i] C)x[i] D)y[i] 【题 7.40】下面描述正确的是 。 A) 两个字符串所包含的字符个数相同时,才能比较字符串 B) 字符个数多的字符串比字符个数少的字符串大 C) 字符串“STOP ”与“STOP”相等 D) 字符串“That”小于字符串“The” 【题 7.41】下述对 C 语言字符数组的描述中错误的是 。 A) 字符数组可以存放字符串 B) 字符数组的字符串可以整体输入、输出 C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D) 不可以用关系运算符对字符数组中的字符串进行比较 【题 7.42】有已排好序的字符串 a,下面的程序是将字符串 s 中的每个字符按 a 中元素的规 律插入到 a 中。请选择填空。 #include main() { char a[20]=“cehiknqtw”; char s[]=“fbla”; int i,k,j; for(k=0;s[k]!=‘\0’;k++) { j=0; while(s[k]>=a[j]&&a[j]!=‘\0’) j++; for(【1】) 【2】; a[j]=s[k]; } puts(a); } 【1】 A)i=strlen(a)+k; i>=j; i-- B)i=strlen(a); i>=j; i-- C)i=j; i
char a[]=“ acegi harb[]=“ bdf jl char c while(a[i]!=“0’&&b[j!=“10’) if(a[i] char s int 1,J gets(s) for(i=j=0;s[i]!=‘0’;i++) f(s[i]!=‘c’)【1】 s[j]=“0 【1】A)s[j++]=s[i] B)s[++j]=s[i] C)s[j]=s[i];j++ D)sli]=s[il 【题7.45】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用 空格分隔。请选择填空 #include
main() { char a[]=“acegikm”; char b[]=“bdfhjlnpq”; char c[80],*p; int i=0,j=0,k=0; while(a[i]!=‘\0’&&b[j]!=‘\0’) { if(a[i] main() { char s[80]; int i,j; gets(s); for(i=j=0;s[i]!=‘\0’;i++) if(s[i]!=‘c’) 【1】; s[j]=‘\0’; puts(s); } 【1】 A)s[j++]=s[i] B)s[++j]=s[i] C)s[j]=s[i]; j++ D)s[j]=s[i] 【题 7.45】下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用 空格分隔。请选择填空。 #include main()
har s[80, cl, c2 cl=s [i] if(i=0)c2= else c2=s[i-1] (【1】)num++; printf(“ There are% d words.n”,num); 【1】 C)cl==“’&&c2!=‘ D)cl!=“’&&c2!=‘ 【题7.46】下面程序的运行结果是 #include char ch[7]={“12ab56”}; int i,s=0 for(i=0;ch[i]>=“0’&&ch[i] (表示回车),则下面程序的运行结果是 #include char al[5],a2[5],a3[5],a45]; ts(al): puts(a puts(a3): puts(a4)
{ char s[80],c1,c2=‘’; int i=0,num=0; gets(s); while(s[i]!=‘\0’) { c1=s[i]; if(i==0) c2=‘’; else c2=s[i-1]; if(【1】) num++; i++; } printf(“There are %d words.\n”,num); } 【1】 A)c1==‘’&&c2==‘’ B)c1!=‘’&&c2==‘’ C)c1==‘’&&c2!=‘’ D)c1!=‘’&&c2!=‘’ 【题 7.46】下面程序的运行结果是 。 #include main() { char ch[7]={“12ab56”}; int i,s=0; for(i=0;ch[i]>=‘0’&&ch[i] cc dd (表示回车),则下面程序的运行结果是 。 #include main() { char a1[5],a2[5],a3[5],a4[5]; scanf(“%s %s”,a1,a2); gets(a3); gets(a4); puts(a1); puts(a2); puts(a3); puts(a4); }
【题7.48】当运行以下程序时,从键盘输入:ab def (表示回车),则下面程序的运行结果是 #include #define n 6 maino char cINJ for(i(表示回车),则下面程序 的运行结果是 #include int i=0: hile(s[i]!=‘0 f(s[i]=c)s[i]=s[i]-32; else if(s [i]==c-32)s[i]=s [i]+32 puts(s) A) ahAMa B) AhAMa C) AhAMa aha D) ahAMa ahA 【题7.50】下面程序的运行结果是
A)aa B)aa C)aa D)aa bb bb bb bb cc cc cc dd dd cc dd dd ee 【题 7.48】当运行以下程序时,从键盘输入:ab c def (表示回车),则下面程序的运行结果是 。 #include #define N 6 main() { char c[N]; int i=0; for(;i(表示回车),则下面程序 的运行结果是 。 #include main() { char s[80],c=‘a’; int i=0; scanf(“%s”,s); while(s[i]!=‘\0’) { if(s[i]==c) s[i]=s[i]-32; else if(s[i]==c-32) s[i]=s[i]+32; i++; } puts(s); } A)ahAMa B)AhAMa C)AhAMa ahA D)ahAMa ahA 【题 7.50】下面程序的运行结果是