一 单项选择题
1.下列描述中不正确的是( )。
A) 字符型数组中可以存放字符串
B) 可以对字符型数组进行整体输入、输出
C) 可以对整型数组进行整体输入、输出
D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
2.执行下面的程序段后,变量k中的值为( )。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A) 不定值 B) 33 C) 30 D) 10
3.设有数组定义: char array[ ]="China"; 则数组array所占的空间为( )。
A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节
4.下列程序执行后的输出结果是( )。
#include main() { char arr[2][4]; strcpy(arr,"you"); strcpy(arr[1],"me"); arr[0][3]=’&’; printf("%s \\n",arr); } A) you&me B) you C) me D) err 5.执行下列程序时输入:123<空格>456<空格>7<回车>,输出结果是( )。 main() { char s[100]; int c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf("%c, %d, %s\\n", c, i, s); } A) 123,456,7 B) 1,456,7 C) 1,23,456,7 D) 1,23,456 6.假定int类型变量占用两个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是( )。 A) 3 B) 6 C) 10 D) 20 7.以下程序的输出结果是( )。 main() {int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]); } A) 258 B) 741 C) 852 D) 369 8.以下数组定义中不正确的是( )。 A) int a[2][3]; B) int b[][3]={0,1,2,3}; C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 9.以下程序的输出结果是( )。 main() {int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\\n", a[0][3],a[1][2],a[2][1],a[3][0]); } A) 0650 B) 1470 C) 5430 D) 输出值不定 10.以下程序的输出结果是( )。 #include main() {char st[20]="hello\\0\\\\\\\"; printf(%d %d\\n", strlen(st),sizeof(st)); } A) 9 9 B) 5 20 C) 9 20 D) 20 20 11.以下程序的输出结果是( )。 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 12.以下程序的输出结果是( )。 main() {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 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.以下程序的输出结果是( )。 main() {char w[ ][10]={"ABCD for(k=1;k<3;k++) printf("%s\\n",w[k]); } A) ABCD B) ABCD C) EFG D) EFGH FGH EFG JK IJKL KL IJ O M 15.当执行下面的程序时,如果输入ABC,则输出结果是( )。 #include #include main() {char ss[10]="12345"; gets(ss);strcat(ss,"67");printf("%s\\n", ss); } A) ABC67 B) ABC67 C) 12345ABC6 D) ABC4567 16.若要定义c为2×3×4的三维数组,正确的定义语句是( )。 A) float c[2][3][4] B) float c[2,3,4] C) float c(2,3,4) D) float c(2)(3)(4) 17.若定义int a[2][2]={1,2,3,4},则a数组的各数组元素值分别为( )。 A) a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4 B) a[0][0]=1,a[0][1]=3,a[1][0]=2,a[1][1]=4 C) a[0][0]=4,a[0][1]=3,a[1][0]=2,a[1][1]=1 D) a[0][0]=4,a[0][1]=2,a[1][0]=3,a[1][1]=1 18.在下列叙述中,正确的一条是( )。 A) 以下语句是正确的:char c[]=”ab”; B) 一维数组的定义可采用下列格式:int a(10); C) 下面的语句定义了一个二维数组:float a[3,4]; D) 以下两个语句中的a[3][4]的含义相同:int a[3][4]; a[3][4]=1; 19.当输入的数据为2、5时,以下程序的输出结果是( )。 #include main() {int f[100],i,j,k,m; scanf(“%d%d”,&k,&m); for(i=0;i<=m;i++) f[i]=0; f[k-1]=1; for(i=k;i<=m;i++) for(j=i-k;j<=i-1;j++) f[i]+=f[j]; printf(“%d%10d%10d\\n”,k,m,f[m]); } A) 3 5 5 B) 3 5 7 C) 2 5 5 D) 3 6 9 20.在下列语句中,正确的是( )。 A) char str[]=”China”; B) char str[];str=”China”; C) char str1[5],str2[]={”China”};str1=str2; D) char str1[],str2[];str2={”China”};strcpy(str1,str2); 21.下面语句中不正确的是( )。 A) int a[5]={1,2,3,4,5}; B) int a[5]={1,2,3}; C) int a[]={0,0,0,0,0}; D) int a[5]={0*5}; 22.若先后输入4、1、5、3、7,以下程序的输出结果为( )。 #define MAX 100 main() { int i,j,n,flag,t,a[MAX]; printf(“输入数据个数:”); scanf(“%d\\n”,&n); for(i=1;i<=n;i++) scanf(“%d”,&a[i]); for(i=1;i for(j=1;j<=n-i;j++) if(a[j]>a[j+1]) {flag=0; t=a[j]; a[j]=a[j+1]; a[j+1]=t; } if(flag) break; } for(i=1;i<=n;i++) printf(“%-3d”,a[i]); printf(“\\n”); } A) 2 4 6 7 B) 1 2 3 4 C) 1 5 4 7 D) 1 3 5 7 23.以下程序的输出结果是( )。 main() {int n,a[10]; for(n=0;n<=9;n++) a[n]=n; for(n=9;n>=0;n--) printf(“%d”,a[n]); } A) 1 2 3 4 5 6 7 8 9 10 B) 9 8 7 6 5 4 3 2 1 0 C) 10 9 8 7 6 5 4 3 2 1 D) 0 1 2 3 4 5 6 7 8 9 24.若输入aefjhi、c、adfjhijk,以下程序的输出结果为( )。 #include #include main() {int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf(“The largest string is\\n%s\\n”,string); } A) adfjhi B) c C) aefjhijk D) aefjhi 25.以下程序的输出结果是( )。 #include #include main() {char str[12]={’s’,’t’,’r’,’i’,’n’,’g’}; printf(“%d\\n”,strlen(str)); } A) 6 B) 7 C) 11 D) 12 26.有以下程序: #include #define N 6 main() {char c[N]; int i=0; for(;i 输入以下三行,每行输入都是在第一列上开始, a b cdef 程序的输出结果是( )。 A) abcdef B) a C) a D) a b b b c cd d d cdef e f 27.设有:char str[ ]=“Beijing”; 则执行:printf(“%d\\n”, strlen(strcpy(str, “China”)));后输出的结果为( )。 A) 5 B) 7 C) 12 D) 14 28.请选出以下程序的输出结果( )。 #include main() {char s1[10],s2[10],s3[10],s4[10]; scanf(“%s%s”,s1,s2);gets(s3);gets(s4); puts(s1);puts(s2);puts(s3);puts(s4); } 输入数据如下:(此处 aaaa bbbb cccc dddd A) aaaa B) aaaa C) aaaa D) aaaa bbbb bbbb bbbb bbbb cccc cccc cccc dddd dddd cccc dddd dddd eeee 29.请读程序: main() {int n[2],i,j,k; for(i=0;i<2;i++) n[i]=0; k=2; for(i=0;i } 上面程序的输出结果是( )。 A) 不确定的值 B) 3 C) 2 D) 1 30.请读程序片段(字符串内没有空格字符):printf(“%d\\n”,strlen(“ATS\\n012\\1\\\\”));其输出结果应为( )。 A) 11 B) 10 C) 9 D) 12 31.下述对C语言字符数组的描述中错误的是( )。 A) 字符数组可以存放字符串 B) 字符数组中的字符串可以整体输入、输出 C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D) 不可以用关系运算符对字符数组中的字符串进行比较 32.阅读下列程序: main() {int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i printf(“%d\\n”,n[1]); } 上述程序运行后,输出的结果是( )。 A) 2 B) 1 C) 0 D) 3 33.以下程序的输出结果是( )。 main() {int n[3][3], i, j; for(i=0;i<3;i++) for(j=0;j<3;j++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j]; printf(“%d\\n”, n[i][j]); } A) 14 B) 0 C) 6 D) 值不确定 34.以下语句的输出结果为( )。 printf(“%d\\n”, strlen(“\\\”\\065\\xff\\n”)); A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出 35.合法的数组定义是( )。 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}; 36.以下程序的输出结果是( )。 main() {char w[ ][10]={"ABCD for(k=1;k<3;k++) printf("%s\\n", &w[k][k]); } A) ABCD B) ABCD C) EFG D) FGH FGH EFG JK KL KL IJ O M 37.函数调用strcat( strcpy(str1,str2), str3 )的功能是( )。 A) 将串str1复制到串str2中后再连接到串str3之后 B) 将串str1连接到串str2之后再复制到串str3之后 C) 将串str2复制到串str1中后再将串str3连接到串str1之后 D) 将串str2连接到串str1之后再将串str1复制到串str3之后 38.有以下定义: char x[ ]=“abcdefg”; char y[ ]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’}; 则正确的叙述为( )。 A) 数组x和数组y等价 B) 数组x和数组y的长度相同 C) 数组x的长度大于数组y的长度 D) 数组x的长度小余数组y的长度 39.下面程序的运行结果是( )。 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); } A) 12ba56 B) 6521 C) 6 D) 62 40.以下程序运行后,输出结果是( )。 main() {int y=18, i=0, j, a[8]; do {a[i]=y%2; i++; y=y/2; }while(y>=1); for(j=i-1;j>=0;j--) printf("%d", a[j]); printf(“\\n”); } A) 10000 B) 10010 C) 00110 D) 10100 41.以下程序的输出结果是( )。 main() {int n[5]={0,0,0}, i, k=2; for(i=0; i } A) 不确定的值 B) 2 C) 1 D) 0 42.若有定义和语句:char s[10];s=”abcd”;printf(“%s\\n”,s);则输出结果是( )。 A) abcd B) a C) abc D) 编译通不过 二 填空题 1.下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。 #include #include 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 { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf("\\n"); } 2.若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式) while(s[i]){ d[j]= ;j++;} d[j]=0; 3.下列程序段的输出结果是 。 main() { char b[]="Hello,you"; b[5]=0; printf("%s\\n", b); } 4.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是 。 char a[10], b; scanf(“a=%s b=%c”, a, &b); 5.以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制数的形式输出,请填空。 main() {int b[16]={‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}; int c[], 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 ); } } 6.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中的第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。请填空。 main() {char str1[100], str2[100], c; int i, s; printf(“\\n Input string 1:\\n”); gets(str1); printf(“\\n Input string 2:\\n”); gets(str2); i=0; while((str1[i]= =str2[i])&&(str1[i]!= )) i++; s= ; printf("%d\\n", s); } 7.以下语句的输出结果是 。 printf(“%d\\n”, strlen(“\\\”\\085\\xff\\n”)); 8.对数组中的元素值进行排序: main() {int a[ ]={2,4,15,3,17,5,8,23,9,7,11,13}, i, j, k; for(k=0;k<12;k++) for(i=k;i<12;i++) if(a[i]> ) {j=a[i]; a[i]= ; =j; } for(i=0;i<12;i++) printf(“%4d”, a[i]); } 9.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1、2、3、……),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。 {int a[26], j, n, count; for(j=1;j<=25;j++) a[j]=j; j=1;count=0;n= ; do {if(a[j]!=0) {n++; if(n%5= =0) { ; if(count= =24) printf(“%d\\n”, j); count++; } } j++; if(j>25) j=1; } while( ); } 10.阅读下列程序: main() {int i, j, row, column, m; int array[3][3]={{100, 200, 300}, {28, 72, -30}, {-850, 2, 6}}; m=array[0][0]; for(i=0; i<3; i++) for(j=0; j<3; j++) if(array[i][j] printf("%d, %d, %d\\n", m, row, column); } 上述程序的输出结果是 。 11.以下程序的功能是:从键盘上输入若干个学生的成绩,计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。 main() {float x[1000], sum=0.0, ave, a; int i, n=0; printf(“Enter mark:\\n”); scanf(“%f”, &a); while(a>=0.0&&n<1000) {sum+= ; x[n]= ; n++; scanf(“%f”, &a);} ave= ; printf(“Output:\\n”); printf(“ave=%f\\n”, ave); for(i=0;i }下载本文