![]() ![]() |
|
1998年4月全国计算机等级考试二级C语言笔试试题及答案 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:06:34 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分) 其中文件AUTOEXEC.BAT的内容如下: MD \XYZ CD \DOS\USER 则由A盘启动成功后,A盘的当前目录是 A.\DOS\USER B.\XYZ C.根目录 D.\DOS (21) 在C语言提供的合法的关键字是 A.swicth B.cher C.Case D.default (22) 在C语言中,合法的字符常量是 A.‘\084’ B.‘\x43’ C.‘ab’ D.“\0” (23) 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是 A.1 B.2 C.2.0 D.2.5 (24) 合法的数组定义是 A.int a[]="string"; B.int a[5]={0,1,2,3,4,5}; C.vhst s="string"; D.char a[]={0,1,2,3,4,5}; (25) 设a为整型变量,不能正确表达数学关系:1010&&a>15 D.!(a<=10)&&!(a>=15) (26) 若t为double类型,表达式t=1,t5,t++的值是 A.1 B.6.0 C.2.0 D.1.0 (27) 若有定义和语句: char s[10]:s="abcd";printf("%s\n",s); 则结果是(以下u代表空格) A.输出abcd B.输出a C.输出abcduuuuu D.编译不通过 (28) 若有定义和语句: int **pp,*p,a=10,b=20; pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp); 则输出结果是: A.10,20 B.10,10 C.20,10 D.20,20 (29) 若有以下定义和语句: int u=010,v=0x10,w=10; printf("%d,%d,%d\n,u,v,w); 则输出结果是: A.8,16,10 B.10,10,10 C.8,8,10 D.8,10,10 (30) 若有以下定义和语句 char c1=’b’,c2=’e’; printf("%d,%c\n",c2-c1,c2-’a’+"A"); 则输出结果是: A.2,M B.3,E C.2,E D.输出项与对应的格式控制不一致,输出结果不确定 (31) 若有以下定义: char s[20]="programming",*ps=s; 则不能代表字符o的表达式是 A.ps+2 B.s[2] C.ps[2] D.ps+=2,*ps (32) 若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for(j=0;j<4;j++){...} A.20 B.25 C.24 D.30 (33) 若有以下定义和语句: char *s1="12345",*s2="1234"; printf("%d\n",strlen(strcpy(s1,s2))); 则输出结果是 A.4 B.5 C.9 D.10 (34) 若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是 A.*p B.a[10] C.*a D.a[p-a] (35) 下面程序的输出是 main() { char *s="121"; int k=0, a=0, b=0; do {k++; if(k%2==0) {a=a+s[k]-’0’; continue;} b=b+s[k]-’0’; a=a+s[k]-’0’; } while (s[k+1]); printf("k=%d a=%d b=%d\n",k,a, B.; A.k=3 a=2 b=3 B.k=3 a=3 b=2 C.k=2 a=3 b=2 D.k=2 a=2 b=3 (36) 下面程序的输出是 main() { unsigned a=32768; printf("a=%d\n",a); } A.a=32768 B.a=32767 C.a=-32767 D.a=-1 (37) 若有以下定义: float x;int a,b; 则正确的switch 语句是 A.switch(x) B.switch(x) { case1.0:printf("*\n"); { case1,2:printf("*\n"); case2.0:printf("**\n"); case3:printf("**\n"); } } C.switch (a+ B. D.switch (a+ B.; { case 1:printf("\n"); { case 1:printf(."*\n"); case 1+2:printf("**\n"); case 2:printf("**\n"); } } (38) 若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行符,/u代表空格): 1u2 AuBuC 则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是 A.scanf("x=%d y+%d",&x,&y);a=getchar();b=getchar();c=getchar(); B.scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar(); C.scanf("%d%d%c%c%c,&x,&y,&a,&b,& C.; D.scanf("%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,& C.; (39) 以下程序输出的结果是 #include #include main() { char w[][10]={"ABCD","EFGH","IJKL","MNOP"},K; for (k=1;k<3;k++) printf("%s\n",&w[k][k]); } A.ABCD B.ABCD FGH EFG KL IJ M C.EFG D.FGH JK KL O (40) 若有以下的定义: int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a; 则值为3的表式是 A.p+=2, *(p++) B.p+=2,*++p C.p+=3, *kp++ D.p+=2,++*p (41) 假定所有变量均已正确说明,下列程序段运行后x的值是 a=b=c=0;x=35; if(!a)x--; else if( B.; if( C.x=3; else x=4; A.34 B.4 C.35 D.3 (42) 在以下一组运算符中,优先级最高的运算符是 A.<= B.= C.% D.&& (43) 若有以下定义和语句: int w[2][3],(*pw)[3]; pw=w; 则对w数组元素非法引用是 A.*(w[0]+2) B.*(pw+1)[2] C.pw[0][0] D.*(pw[1]+2) (44) 若有以下程序片段: char str[]="ab\n\012\\\""; printf(Ý",strlen(str)); 上面程序片段的输出结果是 A.3 B.4 C.6 D.12 (45) 函数调用:strcat(strcpy(str1,str2),str3)的功能是 A.将串str1复制到串str2中后再连接到串str3之后 B.将串str1连接到串str2之后再复制到串str3之后 C.将串str2复制到串str1中后再将串str3连接到串str1之后 D.将串str2连接到串str1之后再将串str1复制到串str3中 (46) 以下对C语言函数的有关描述中,正确的是 A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可以递归调用 C.函数必须有返回值,否则不能使用函数 D.C程序中有调用关系的所有函数必须放在同一个源程序文件中 (47) 以下叙述中不正确的是 A.在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。 B.在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。 C.在C中,外部变量的隐含类别是自动存储类别。 D.在C中,函数形参可以说明为register变量。 (48) 以下程序的输出结果是 #include subl(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;} { char a,b; a=’A’;b=’B’;sub3(&a,& B.;putchar(a);putchar( B.; a=’A’;b=’B’;sub2(&a, B.;putchar(a);prtchar( B.; a=’A’;b=’B’;sub1(a, B.;putchar(a);putchar( B.; } A.BABBAB B.ABBBBA C.BABABA D.BAABBA (49) 设有如下定义: 二、填空题(每空2分,共40分) 请将每空的正确答案写在答题卡 【1】 至 【20】序号的横线上,答在试卷上不得分。 (1) 与十进制数101等值的二进制数为 【1】 。 (2) DOS命令分为内部命令和外部命令,XCOPY命令属于 【2】 。 (3) 设当前盘为A盘,当前系统提示符为">",在不改变当前盘的情况下,显示C盘的当前目录的路径,应使用命令 【3】 。 (4) 自动批处理文件名必须是 【4】 。 (5) 设当前盘当前目录下有两个文件W.TXT,现要将文件P.TXT连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为 【5】 。 (6) 请写出以下数学式的C语言表达式 6 ──. a ─── b.c (7) 若已知a=10,b=20,则表达式!ab) printf("****y%d\n",y); else printf("####x=%\n",x); (11) 在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是 11 函数.── (12) 若函数fun的类型void,且有以下定义和调用语句: #define M 50 main() { int a[M]; . . . fun(a); . . . } 定义fun函数首部可以用三种不同的形式,请写出这三种形式: 12 .13 .14 ─ ─ ─ (注意:①形参的名字请用q,②使用同一种风格). (13) 若给fun函数的形参s传送字符串:"uuuu6354abc",则函数的返回值是 15 ─. log fun(char s[]) {long n;int sign; for(;isspace(*s);s++); sign+(*s==’-’)?-1:1; if(*s==’+’‖*s==’-’s++; for(n=0;isdigit(*s);s++) n=10*n+(*s-’0’); return sign * n; (14) 以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空. void fun (char *w,char x,int *n) { int i,p; p=0; w[*n]=x; while (x>w[p]) 16 ──; for(i=*n;i>p;i--)w[i]= 17 ─; w[p]=x; ++ *n; } (15) fun1函数的调用语句为:fun1(&a,&b,&c); 它将三个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放量大数.请填空. void fun2 (int *x,int *y) { int t; t=*x; *x=*y;*y=t; } void fun1 (int *pa,int *pb,int *pc) { if(*pc>*pb) fun2( 18) ───; if(*pa<*pc)fun2(19) ──; if(*pa<*pb)fun2(20) ──; } 〖完〗
1998年4月全国计算机等级考试二级笔试C试卷答案 一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。 |
|
![]() ![]() |