第五
篇


模拟练
习



模拟练习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·