第六章 数 组
1. C语言中,引用数组元素时,其数组下标的数据类型允许是
A)整型常量 B)整型表达式
C)整型常量或整型表达式 D)任何类型的表达式
2.在C语言中,一维数组的定义方式是:类型说明符 数组名[【 】];
A)常量表达式 B)整型表达式
C)整型常量或整型表达式 D)整型常量
3.若有以下定义:
double w[10] ;
则w数组元素下标的上限为【 】,下限为 【 】。
4.以下程序段给数组所有的元素输入数据 ,请选择正确答案填入。
#include <stdio.h>
main()
{ int a[10] ,i=0 ;
while(i<10) scanf("%d" ,【 】 ) ;
… }
A)a (i ) B)&a[i 1] C)a i D)&a[ i]
5.执行下面的程序段后,变量k中的值为
A)不定值 B)33 C)30 D)10
int k=3, s[2];
s[0]=k; k=s[1]*10;
6.若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
7.请读程序:
#include < stdio.h>
main( )
{ int N[2],I,J,K;
for ( I=0;I<2;I ) N[J]=N[I] 1;
printf("%d\n", N[K]);}
上面程序的输出结果是
A)不确定的值 B)3 C)2 D)1
8.有如下程序
main()
{ int n[5]={0 ,0 ,0},i ,k=2;
for(i=0;i<k ;i ) n[i]=n[i] 1 ;
printf(" %d\n",n[k]); }
该程序的输出结果是
A)不确定的值 B)2 C)1 D)0
9.以下程序的输出结果是
main()
{ int i ,k ,a[10] ,p[3];
k=5;
for(i=0;i<10;i ) a[i]=i;
for(i=0;i<3;i ) p[i]=a[i*(i 1)];
for(i=0;i<3;i ) k =p[i]*2;
printf("%d\n" ,k); }
A)20 B)21 C)22 D)23
10.阅读下列程序:
main( )
{ int n[3],i,j,k;
for(i=0;i<3;i ) n[i]=0;
k=2;
for (i=0;i<k;i )
for (j=0;j<k;j )
n[j]=n[i] 1;
printf("%d\n",n[1]); }
下述程序运行后输出结果是
A)2 B)1 C)0 D)3
11.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
main( )
{ float x[1000], sum=0.0, ave, a;
int n=0, i;
printf("Enter mark:\n");scanf("%f",&a);
while(a=0.0&& n)
{ sum 【 】 ;
x[n]= 【 】;
n ; scanf("%f",&a); }
ave=【 】;
printf("Output:\n");
printf("ave=%f\n",ave);
for( i=0;i<n;i )
if (【 】) printf("%d ",x[i]);}
12.对以下说明语句的正确理解是
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) 因为数组长度与初值的个数不相同,所以此语句不正确
13.有如下程序
main( )
{ int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1 ;i<3 ;i )
for(j=0 ;j<=i ;j )s =a[i][j];
printf(" %d\n",s);}
该程序的输出结果是
A)18 B)19 C)20 D)21
14.有定义如下:
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)159 B)147 C)357 D)369
15.阅读下列程序:
#include<stdio.h>
main()
{ int i , j , row , col ,m ;
static int a[3][3]={{100,200,300} ,{28,72,-30} ,
{-850, 2, 6}};
m=a[0][0] ;
for (i=0 ; i<3 ; i )
for (j=0 ; j<3 ; i )
if (a[i][j]<m) { m=a[i][j] ; row=i ; col=j ;}
printf("%d ,%d ,%d\n" ,m ,row ,col) ;
}
上述程序的输出结果是【 】 。
16.以下能对二维数组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}};
17.合法的数组定义是
A)int a[]="string" ; B)int a[5]={0 ,1 ,2 ,3 ,4 ,5} ;
C)char s="string" ; D)char a[]={0 ,1 ,2 ,3 ,4 ,5} ;
18.若有说明:int a[3][4]={0};则下面正确的叙述是
A) 只有元素a[0][0]可得到初值0
B) 此说明语句不正确
C) 数组a中各元素都可得到初值,但其值不一定为0
D) 数组a中每个元素均可得到初值0
19.若有说明:int a[3][4];则数组a中各元素
A) 可在程序的运行阶段得到初值0
B) 可在程序的编译阶段得到初值0
C) 不能得到确定的初值
D)可在程序的编译或运行阶段得到初值0
20.若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是
A)&t[3][2] B)t[3] C)*t[1] D)t[2]
21.不能把字符串:Hello!赋给数组b的语句是
A)char b[10]={'H','e','l','l','o','!'};
B)char b[10];b="Hello!";
C)char b[10];strcpy(b,"Hello!");
D)char b[10]="Hello!";
22.以下不能对二维数组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};
23.若有定义和语句:
char s[10] ;
s="abcd" ;printf("%s\n" ,s) ;
则结果是(以下u代表空格)
A)输出abcd B)输出a C)输出abcduuuuu D)编译不通过
24.设有数组定义:char array [ ]="China"; 则数组 array所占的空间为
A)4个字节 B)5个字节 C)6个字节 D)7个字节
25.下述对C语言字符数组的描述中错误的是
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
26.下列描述中不正确的是
A)字符型数组中可以存放字符串
B)可以对字符型数组进行整体输入、输出
C)可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
27.请读程序片段(字符串内没有空格字符):
printf("%d\n", strlen("ATS\N012\1\\"));
上面程序片段的输出结果是
A)11 B)10 C)9 D)8
28.若有以下程序片段:
char str[ ]="ab\n\012\\\"" ;
printf("%d\n" ,strlen(str)) ;
上面程序片段的输出结果是
A)3 B)4 C)6 D)12
29.函数调用:strcat(strcpy(str1 ,str2) ,str3)的功能是
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3中
30.以下函数把b串连接到a串的后面,并返回a中新字符串的长度。请填空。
Strcen(char a[], char b[])
{ int num=0,n=0;
while(*(a num)!= 【 】) num ;
while(b[n]){*(a num)=b[n]; num ; 【 】 ;}
a[num]=0;
return(num);
}
31.下列程序执行后的输出结果是
A)you&me B)you C)me D)err
#include “string.h”
main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s \n",arr);}
32.请选出以下语句的输出结果
printf("%d\n" ,strlen("\t\"\065\xff\n")) ;
A)5 B)14 C)8 D) 输出项不合法 ,无正常输出
33.给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a' ,'b' ,'c' ,'d' ,'e' ,'f','g'};
则正确的叙述为
A)数组X和数组Y等价
B) 数组x和数组Y的长度(空间)相同
C)数组X的长度(空间)大于数组Y的长度(空间)
D)数组X的长度(空间)小于数组Y的长度(空间)
34.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。
#include <stdio.h>
#include <string.h>
main()
{ char a[ ]="clanguage" ,t ;
int i ,j ,k;
k=strlen(a);
for(i=0 ;i<=k-2 ;i =2)
for(j=i 2 ;j<=k ; 【 】 )
if( 【 】 )
{ t=a[i] ;a[i]=a[j] ;a[j]=t ; }
puts(a) ;printf("\n") ;}
35.请选出以下程序段的输出结果
#include<stdio.h>
main()
{ char sl[10] ,s2[10] ,s3[10] ,s4[10] ;
scanf("%s%s" ,s1 ,s2) ;gets(s3) ; gets(s4) ;
puts(s1) ; puts(s2) ; puts(s3) ; puts(s4) ;}
输入数据如下:(此处<CR>代表回车符)
aaaa bbbb<CR>
cccc dddd<CR>
A)aaaa B)aaaa C)aaaa D)aaaa
bbbb bbbb bbbb bbbb
cccc cccc dddd
cccc dddd dddd cccc dddd
36.下面程序的运行结果是
A)12ba56 B)6521 C)6 D)62
main()
{ char ch[7]={"65ab21"};
int i ,s =0 ;
for(i=0 ;ch[i]>='0'&&ch[i]<'9' ;i =2)
s=10*s ch[i]-'0' ;
printf("%d\n",s) ;}
37.设有下列程序:
# include <stdio.h>
# include <string.h>
main()
{ int i ;
char str[10] ,temp[10] ;
gets(temp) ;
for (i=0 ; i<4 ; i )
{ gets(str) ;
if (strcmp(temp ,str)< 0) strcpy(temp ,str) ;}
printf("%s\n" ,temp) ;}
上述程序运行后 ,如果从键盘上输入(在此<CR>代表回车符):
C <CR>
BASIC<CR>
QuickC<CR>
Ada<CR>
Pascal<CR>
则程序的输出结果是【 】 。
39.下列程序的输出结果是
main( )
{ char ch[2][5]={"6934,"8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i ) p[i]=ch[i];
for(i=0;i<2;i )
for(j=0;p[i][j]>='0'&&p[i][j]<='9';j =2)
s=10*s p[i][j]-'0';
printf("%d\n",s);}
A) 6385 B) 69825 C) 63825 D) 693825
40.以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志 ,请填空。
# include <stdio.h>
# include <ctype.h>
main( )
{ int num[26] ,i ;
char c ;
for(i=0 ; i<26 ; i ) num[i]=0 ;
while( 【 】 !='#')
if( isupper(c)) num[c-65] =1 ;
for(i=0 ; i<26 ; i )
if(num[i])
printf("%c:%d\n" ,【 】 , num[i]) ;
}
41.运行下面的程序,如果从键盘上输入:
ab <回车>
c <回车>
def <回车>则输出结果为
A)a B)a C)ab D)abcdef
b b c
c c d
d d
e
f
#include<stdio.h>
#define N 6
main( )
{ char c[N];
int i=0 ;
for( ;i<N ;c[i]=getchar(),i )
for( i=0;i<N;i ) putchar(c[i]);
printf("\n");
}
42.以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。
main()
{ char b[16]={'0','1','2','3','4','5','6','7','8',
'9','A', 'B','C','D','E','F'};
int c[64] ,d ,i=0 ,base ;
long n ;
printf("enter a number:\n"); scanf("%ld",&n);
printf("enter new base:\n"); scanf("%d",&base);
do { c[i]=【 】 ;i ;n=n/base ;} while(n!=0);
printf("transmite new base:\n");
for(--i ;i>=0 ;--i)
{ d=c[i] ;printf("%c",b【 】 ) ;}
}
43.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是
A) 123,456,789 B) 1,456,789
C) 1,23,456,789 D) 1,23,456
main()
{ char s[100]; int c, i;
scanf("%c",&c);
scanf("%d",&i);
scanf("%s",s);
printf("%c,%d,%s \n",c,i,s);}
44.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。
main()
{ char str[100] ,str2[100] ,c ;
int i ,s ;
printf("\n input string 1:\n") ; gest(str1) ;
printf("\n input string 2:\n") ; gest(str2) ;
i=0 ;
while((strl[i]==str2[i])&&(str1[i]!=【 】))
i ;
s=【 】 ;
printf("%d\n",s) ; }
45.以下程序输出的结果是
main()
{ char w[][10]={"ABCD" ,"EFGH" ,"IJKL" ,"MNOP"} ;
int k ;
for (k=1 ;k<4 ;k ) printf("%c\n" ,w[k][k]) ;
}
A)ABCD B)ABCD C)EFG D)F
FGH EFG JK K
KL IJ O P
M
46.下面程序的输出是
#include <stdio.h>
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);
printf("%s\n",ss);
}
输入ABC<CR>(表示回车)
A)ABC B)ABC9 C)123456ABC D)ABC456789
47. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是
A) 3 B) 6 C) 10 D) 20
48. 若有定义语句: char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)
while([i]){ d[j]= 【 】;j ;}
d[j]=0;
49. 以下程序中,while循环的循环次数是
main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(I==5) break;
i ;
}
......
}
A) 1 B) 10
C) 6 D) 死循环,不能确定次数
50. 以下程序的输出结果是
main()
{ int a=0,i;
for(i=;i<5;i )
{ switch(i)
{ case 0:
case 3:a =2;
case 1:
case 2:a =3;
default:a =5;
}
}
printf("%d\n",a);
}
A) 41 B) 13 C) 10 D) 20
51. 以下程序段的输出结果是
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
A) 9 B) 12 C) 13 D) 14
52. 以下程序的输出结果是
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
53. 以下程序的输出结果是
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i )
for(j=i;j<=i;j ) t=t b[i][b[j][j]];
printf("%d\n",t);
}
A) 3 B) 4 C) 1 D) 9
54. 以下程序的输出结果是【13】 。
main()
{ char s[]="abcdef";
s[3]=‘\0';
printf("%s\n",s);
}
55. 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i<n-1;i
for(j=i 1,j<n;j )
if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i ) print(“%d,”,aa[i]);
printf(“\n”);
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10 B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10 D) 1,2,10,9,8,7,6,5,4,3
56. 有以下程序
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序运行后的输出结果是
A)9,9 B)8,9 C)1,8 D)9,8
57. 有以下程序
main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0
for(i=0;i<4;i ) s =aa[i][1];
printf(“%d\n”,s);
}
程序运行后的输出结果是
A) 11 B) 19 C) 13 D) 20
58. 以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
#include <string.h>
void f(char p[][10],int n)
{ char t[20]; int i,j;
for(i=0;i<n-1;i )
for(j=i 1;j<n;j
if(strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{ char p[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};int i;
f(p,5); printf(“%d\n”,strlen(p[0]));
}
程序运行后的输出结果是
A) 6 B) 4 C) 5 D) 3