第五 篇 模拟练 习 模拟练习1 一、单选题(共40题,每题1.5分,共60分) 1.以下不合法的数值常量是。 A.011 B.1e1 C.8.0E0.5 D.0xabcd 2.以下叙述中错误的是。 A.用户所定义的标识符允许使用关键字 B.用户所定义的标识符应尽量做到“见名知意” C.用户所定义的标识符必须以字母或下画线开头 D.用户所定义的标识符中,大、小写字母代表不同标识 3.以下4组用户定义标识符中,全部合法的一组是。 A. _main enclude sin B. If -max turbo C. txt REAL 3COM D. int k_2 _001 4.以下选项中可作为C 语言合法常量的是。 A.-80. B.-080 C.-8e1.0 D.-80.0e 5.以下循环体的执行次数是。 main() { int i,j; for (i=0,j=1; i<=j+1;i+=2,j--) printf("%d \n",i); } A.3 B.2 C.1 D.0 6.在一个C程序中。 A.main()函数必须出现在所有函数之前 B.main()函数可以在任何地方出现 C.main()函数必须出现在所有函数之后 D.main()函数必须出现在固定位置 7.以下4个选项中,不能看作一条语句的是。 A.{;} B.a=0,b=0,c=0; C.if(a>0); D.if(b==0)m=1;n=2; 8.以下符合C语言语法的实型常量是。 A.1.2E0.5 B.3.14159E C..5E-3 D.E15 9.设inta=12,则执行完语句a+=a-=a*a后,a的值是。 ·229· A.552 B.264 C.144 D.-264 10.若有定义: int a=8,b=5,c; 执行语句c=a/b+0.4;后,c的值是。 A.1.4 B.1 C.2.0 D.2 11.若执下面程序时从键盘上输入5,则输出是。 main() { int x; scanf("%d",&x); if (x++>5) printf("%d\n",x); else printf("%d\n",x--); } A.7 B.6 C.5 D.4 12.以下程序的输出结果是。 #include <stdio.h> main() { int i=10,j=10; printf("%d,%d\n",++i,j--); } A.11,10 B.9,10 C.010,9 D.10,9 13.以下叙述中正确的是。 A.C语言比其他语言高级 B.C语言可以不用编译就能被计算机识别执行 C.C语言有接近英语国家的自然语言和数学语言作为语言的表达形式 D.C语言出现最晚,具有其他语言的一切优点 14.以下叙述中正确的是。 A.C语言的源程序不必通过编译就可以直接运行 B.C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C.C源程序经编译形成的二进制代码可以直接运行 D.C语言中的函数不可以单独进行编译 15.以下叙述中正确的是。 A.用C 程序实现的算法必须要有输入和输出操作 B.用C 程序实现的算法可以没有输出但必须要有输入 C.用C 程序实现的算法可以没有输入但必须要有输出 D.用C 程序实现的算法可以既没有输入也没有输出 16.在函数调用过程中,如果函数funA()调用了函数funB(),函数funB()又调用了函 ·230· 数funA(),则。 A.称为函数的直接递归调用B.称为函数的间接递归调用 C.称为函数的循环调用D.C语言中不允许这样的递归调用 17.有如下程序 int func(int a,int b) { return(a+b); } main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r); } 该程序的输出结果是。 A.12 B.13 C.14 D.15 18.以下程序的输出结果是。 #include <stdio.h> sub1(char a,char b) {char c; c=a;a=b;b=c;} sub2(char *a,char b) {char c; c=*a;*a=b;b=c;} sub3(char *a,char *b) {char c; c=*a;*a=*b;*b=c;} main() { char a,b; a='A';b='B';sub3(&a,&b);putchar(a);putchar(b); a='A';b='B';sub2(&a,b);putchar(a);putchar(b); a='A';b='B';sub1(a,b);putchar(a);putchar(b); } A.BABBAB B.ABBBBA C.BABABA D.BAABBA 19.当执行下面的程序时,如果输入ABC,则输出结果是。 #include "stdio.h" #include "string.h" main() { char ss[10]="12345"; gets(ss); strcat(ss,"6789"); printf("%s\n",ss); } A.ABC6789 B.ABC67 C.12345ABC6 D.ABC456789 20.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是。 A.函数调用可以作为独立的语句存在 ·231· B.函数调用可以作为一个函数的实参 C.函数调用可以出现在表达式中 D.函数调用可以作为一个函数的形参 21.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是。 A.3 B.4 C.5 D.有语法错 22.以下程序的输出结果是。 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 23.以下数组定义中错误的是。 A.intx[][3]={0}; B.intx[2][3]={{1,2},{3,4},{5,6}}; C.intx[][3]={{1,2,3},{4,5,6}}; D.intx[2][3]={1,2,3,4,5,6}; 24.定义如下变量和数组: int i; int 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 25.下列关于C语言数据文件的叙述中正确的是。 A.文件由ASCII码字符序列组成,C语言只能读写文本文件 B.文件由二进制数据序列组成,C语言只能读写二进制文件 C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D.文件以数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 26.以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是。 A.feof(fp) B.ftell(fp) C.fgetc(fp) D.rewind(fp) 27.下列叙述中正确的是。 A.break语句只能用于switch语句 B.在switch语句中必须使用default ·232· C.break语句必须与switch语句中的case配对使用 D.在switch语句中,不一定使用break语句 28.设x、y、z均为整型变量,则执行语句: x=y=3;t=++x||++y; 后,y的值为。 A.不定值B.4 C.3 D.1 29.有以下程序 main() { int i=0,s=0; do { if (i%2) { i++; continue; } i++; s+=i; } while (i<7); printf("%d\n",s); } 执行后输出结果是。 A.16 B.12 C.28 D.21 30.下面程序的输出是。 #include <stdio.h> #include <string.h> main() { char *p1="abc",*p2="ABC",str[50]="xyz"; strcpy(str+2,strcat(p1,p2)); printf("%s\n",str); } A.xyzabcABC B.zabcABC C.yzabcABC D.xyabcABC 31.有以下程序 main() { char s[]={"aeiou"},*ps; ps=s; printf("%c\n",*ps+4); } 程序运行后的输出结果是。 ·233· A.a B.e C.u D.元素s[4]的地址 32.若有以下定义和语句 char c1='b',c2='e'; printf("%d,%c\n",c2-c1,c2-'a'+'A'); 则输出结果是。 A.2,M B.3,E C.2,E D.输出项与对应的格式控制不一致,输出结果不确定 33.以下选项中,非法的字符常量是。 A.\' t' B.\' 17' C."\n" D.\' xaa' 34.若有以下程序片段: char str[]="ab\n\012\\\""; printf("%d",strlen(str)); 上面程序片段的输出结果是。 A.3 B.4 C.6 D.12 35.有以下程序 #include <stdio.h> void WriteStr(char *fn,char *str) { FILE *fp; fp=fopen(fn,"w"); fputs(str,fp); fclose(fp); }m ain() { WriteStr("t1.dat","start"); WriteStr("t1.dat","end"); } 程序运行后,文件t1.dat中的内容是。 A.start B.end C.startend D.endrt 36.有以下程序 main() { int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i; pa=a; for (i=0;i<3;i++) if (i<2) pa[1][i]=pa[1][i]-1; ·234· else pa[1][i]=1; printf("%d\n",a[0][1]+a[1][1]+a[1][2]); } 执行后输出结果是。 A.7 B.6 C.8 D.无确定值 37.有以下程序 main() { char a,b,c,d; scanf("%c,%c,%d,%d",&a,&b,&c,&d); printf("%c,%c,%c,%c\n",a,b,c,d); } 若运行时从键盘上输入“6,5,65,66<回车>”,则输出结果是。 A.6,5,A,B B.6,5,65,66 C.6,5,6,5 D.6,5,6,6 38.下列程序的输出结果是。 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 39.有以下程序 main() { int i=1,j=2,k=3; if (i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); } 程序运行后的输出结果是。 A.123 B.234 C.223 D.233 40.以下程序的输出结果是。 #include <string.h> main() { char *p1,*p2,str[50]="ABCDEFG"; ·235· p1="abcd"; p2="efgh"; strcpy(str+1,p2+1); strcpy(str+3,p1+3); printf("%s",str); } A.AfghdEFG B.Abfhd C.Afghd D.Afgd 二、程序填空题(共1题,共10分) 给定程序的功能是用冒泡法对6个字符进行排序。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 使用VisualC++ 2010Express打开考生文件夹proj1下的工程文件proj1.sln。找到 工程下proj1下的文件夹“源文件”,打开其中的blank1.c文件。 注意:不得增行或删行,也不得更改程序的结构! #include <stdio.h> #include <string.h> #define MAXLINE 20 void fun ( char *pstr[6]) { int i, j ; char *p ; for (i =0 ; i <5 ; i++) { for (j =i +1; j <6; j++) { if (strcmp(*(pstr+i),*(pstr+j)) 【1】) { p=*(pstr +i) ; pstr[i]= 【2】 ; *(pstr +j)= 【3】 ; } } } }m ain() { int i ; char *pstr[6], str[6][MAXLINE]; for (i =0; i <6 ; i++) pstr[i]=str[i]; printf( "\nEnter 6 string(1 string at each line): \n" ) ; for (i =0 ; i <6 ; i++) scanf("%s", pstr[i]) ; fun(pstr) ; printf("The strings after sorting:\n") ; ·236·