1999年9月全国计算机二级C语言考试真题及答案一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。
(1)十进制数1385转换成十六进制数为A.568B.569C.D85D.D55(2)下列叙述中正确的是A.计算机病毒只能传染给可执行文件B.计算机软件是指存储在软盘中的程序C.计算机每次启动的过程之所以相同,是因为RAM中的所有信息在关机后不会丢失D.硬盘虽然装在主机箱内,但它属于外存(3)一个字长的二进制位数是A.8B.16C.32D.随计算机系统而不同的(4)CPU主要由运算器与控制器组成,下列说法中正确的是A.运算器主要负责分析指令,并根据指令要求作相应的运算B.控制器主要完成对数据的运算,包括算术运算和逻辑运算C.控制器主要负责分析指令,并根据指令要求作相应的运算D.控制器直接控制计算机系统的输入与输出操作(5)下列叙述中正确的是A.将数字信号变换成便于在模拟通信线路中传输的信号称为调制B.以原封不动的形式将来自终端的信息送入通信线路称为调制解调C.在计算机网络中,一种传输介质不能传送多路信号D.在计算机局域网中,只能共享软件资源,而不能共享硬件资源(6)各种网络传输介质A.具有相同的传输速率和相同的传输距离B.具有不同的传输速率和不同的传输距离C.具有相同的传输速率和不同的传输距离D.具有不同的传输速率和相同的传输距离(7)多媒体计算机系统的两大组成部分是A.多媒体功能卡和多媒体主机B.多媒体通信软件和多媒体开发工具C.多媒体输入设备和多媒体输出设备D.多媒体计算机硬件系统和多媒体计算机软件系统(8)按通信距离划分,计算机网络可以分为局域网和广域网。
下列网络中属于局域网的是A.InternetB.CERNETC.NovellD.CHINANET(9)在Windows中,启动应用程序的正确方法是A.用鼠标双击该应用程序图标B.将该应用程序窗口小化成图标C.将该应用程序窗口还原D.将鼠标指向该应用程序图标(10)在Windows中,终止应用程序执行的正确方法是A.用鼠标双击应用程序窗口左上角的控制菜单框B.将应用程序窗口小化成图标C.用鼠标双击应用程序窗口右上角的还原按钮D.用鼠标双击应用程序窗口中的标题栏(11)DOS控制键Ctrl+Alt+Del的功能为A.删除一个字符并退格B.暂停标准输出设备的输出C.热启动D.终止当前操作(12)设当前盘为C盘,为了将A盘当前目录中所有扩展名为.PAS 的文件改成扩展名为.P,应使用的DOS命令为A.REN A:*.PAS A:*.PB.REN A:*.PAS *.PB.REN A:.PAS A:.PD.REN A:.PAS .P(13)设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,正确的DOS命令为A.CD D2B.CD D2\C.CD \D2D.CD D1\D2(14)设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT 连接后以文件名Y.TXT 存放到A盘的当前目录中,正确的DOS命令为A.COPY A.TXT+X.TXT A:Y.TXTB.COPY B:A.TXT+X.TXT A:Y.TXTB.COPY B:A.TXT+B:X.TXT>Y.TXTD.COPY B:A.TXT+B:X.TXT Y.TXT(15)下列DOS命令中正确的是A.REN \USER\A.TXT \B.TXTB.CD \C.TYPE *.TXTD.MD \(16)以下选项中属于C语言的数据类型是A.复数型B.逻辑型C.双精度型D.集合型(17)在C语言中,不正确的int类型的常数是A.32768B.0C.037D.0xAF(18)语句:printf("%d",(a=2)&&(b= -2);的输出结果是A.无输出B.结果不确定C.-1D.1(19)下列描述中不正确的是A.字符型数组中可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出D.不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值(20)设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是A.1B.0C.-1D.2(21)当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A.c=b=a;B.(a=C.‖(b=c);C.(a=c)&&(b=c);D.a=c=b;(22)以下程序的输出结果是A.10 1 9 2B.9 8 7 6C.10 9 9 0D.10 10 9 1main( ){ int x=10,y=10,I;for(i=0;x>8;y=++i)printf("%d,%d ",x--,y);}(23)以下程序的输出结果是A.5 2B.5 1C.5 3D.9 7main( ){ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d ",p[i]);}(24)以下程序的输出结果是A.6B.6789C.'6'D.789main( ){ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;int i;i=8;p=a+I;printf("%s\n",p-3);}(25)以下程序的运行结果是A.运行后报错B.6 6C.6 12D.5 5#include "stdio.h"main( ){int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};int *p=a+5, *q=NULL;* q=*(p+5);printf("%d %d \n",*p,*q);}(26)以下说法中正确的是A.#define和printf都是C语句B.#define是C语句,而printf不是C.printf是C语句,但#define不是D.#define和printf都不是C语句(27)语句:printf("%d \n",12 &012);的输出结果是A.12B.8C.6D.012(28)能正确表示a和b同时为正或同时为负的逻辑表达式是A.(a>=0‖b>=0)&&(a<0‖b<0)B.(a>=0&&b>=0)&&(a<0&&b<0)C.(a+b>0)&&(a+b<=0)D.a*b>0(29)以下程序的输出结果是A.2 0B.3 1C.3 2 1D.2 1 0main( ){ int n=4;while(n--)printf("%d ",--n);}(30)若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A.p+1B.a+1C.a++D.++p(31)以下程序的输出结果是A.17,021,0x11B.17,17,17B.17,0x11,021D.17,21,11main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);}(32)以下程序的输出结果是A.-1 1B.0 1C.1 0D.0 0main( ){ int a= -1,b=1,k;if((++a<0)&& ! (b-- <=0))printf("%d %d\n",a,b);elseprintf("%d %d\n",b,a);}(33)若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A.*p=&a; scanf("%ld",p);B.p=(long *)malloc(8); scanf("%ld",p);C.scanf("%ld",p=&a);D.scanf("%ld",&a);(34)以下选项中,能定义s为合法的结构体变量的是A.typedef struct abcB.struct{ double a; { double a;char b[10]; char b[10];} s; } s;C.struct ABCD.typedef ABC{ double a; { double a;char b[10]; char b[10];} }ABC s; ABC s;(35)若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是A.t[2][0]B.t[2][2]C.t[l][2]D.t[2][l]int t[3][3], *pt([3], k;for (k=0;k<3;k++)pt[k]=&t[k][0];(36)下面程序把数组元素中的值放入a[0]中。
则在if 语句中的条件表达式应该是A.p>aB.*p>a[0]C.*p>*a[0]D.*p[0]> *a[0]main( ){ int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I;for(i=o;i<10;i++,p++)if(________)*a=*p;printf("%d",*a);}(37)以下程序的输出结果是A.ihgfedcbaB.abcdefghiC.abcdedebaD.ihgfefghi#includemain( ){ char *a="abcdefghi"; int k;fun(a); puts(a);}fun(char *s){ int x,y; char c;for(x=0,y=strlen(s)-1;x0)fun(k-1);printf("%d",k);}(42)以下程序的输出结果是A.6 9 9B.6 6 9C.6 15 15D.6 6 15int d=1;fun(int p){ static int d=5;d+=p;printf("%d ",D.;return(D.;}main( ){ int a=3; printf("%d \n",fun(a+fun(D.)); }(43)以下程序的输出结果是A.123456780B.123 456 780C.12345678D.147main( ){ char ch[3][4]={"123","456","78"}, *p[3]; int i;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}(44)以下程序的输出结果是A.1B.4C.7D.5#includeint a[3][3]={1,2,3,4,5,6,7,8,9,},*p;main( ){ p=(int*)malloc(sizeof(int));f(p,a);printf("%d \n",*p);}f(int *s, int p[][3]){ *s=p[1][1]; }(45)以下程序的输出结果是A.9B.6C.36D.18#define f(x)x*xmain( ){ int a=6,b=2,c;c=f(a)/ f(B.;printf("%d \n",C.;}(46)以下程序的输出结果是A)4 2 1 1B.0 0 0 8C.4 6 7 8D.8 8 8 8main( ){ char *s="12134211"; int v[4]={0,0,0,0},k,i;for(k=0;s[k];k++){ switch(s[k]){ case '1':i=0;case '2':i=1;case '3':i=2;case '4':i=3;}v[i]++;}for(k=0;k<4;k++)printf("%d ",v[k]);}(47) 以下程序的输出结果是A.AfghdEFGB.AbfhdC.AfghdD.Afgd#includemain( ){ char *p1,*p2,str[50]="ABCDEFG";p1="abcd"; p2="efgh";strcpy(str+1,p2+1); strcpy(str+3,p1+3);printf("%s",str);}(48) 以下程序的输出结果是A.#*#*#B.#####C.*****D.*#*#*main( ){ int i;for(i=1;i<6;i++){ if(i%2){printf("#");continue;}printf("*");}printf("\n");}(49) 若有以下定义和语句:double r=99, *p=&r;*p=r;则以下正确的叙述是A.以下两处的*p含义相同,都说明给指针变量p赋值B.在"double r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元C.语句"*p=r;"把变量r的值赋给指针变量pD.语句"*p=r;"取变量r的值放回r中(50) 以下程序的输出结果是A.编译不通过,无输出B.acegC.acegiD.abcdefghimain( ){ int i;for(i='A';i<'I';i++,i++) printf("%c",i+32);printf(" \n");}二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。