1999年9月全国计算机等级考试二级C语言试卷(含答案)
发布时间:2006-10-14 8:53:56   收集提供:gaoqian
 一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)
 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应的位置上,答在试卷上不得分。
(1) 十进制数1385转换成十六进制数为
 A) 568 B) 569 C) D85 D) D55
(2) 下列叙述中正确的是
 A) 计算机病毒只能传染给可执行文件
 B) 计算机软件是指存储在软盘中的程序
 C) 计算机每次启动的过程之所以相同,是因为RAM中的所有信息在关机后不会丢失
 D) 硬盘虽然装在主机箱内,但它属于外存
(3) 一个字长的二进制位数是
 A) 8 B) 16 C) 32 D) 随计算机系统而不同的
(4) CPU主要由运算器与控制器组成,下列说法中正确的是
 A) 运算器主要负责分析指令,并根据指令要求作相应的运算
 B) 控制器主要完成对数据的运算,包括算术运算和逻辑运算
 C) 控制器主要负责分析指令,并根据指令要求作相应的运算
 D) 控制器直接控制计算机系统的输入与输出操作
(5) 下列叙述中正确的是
 A) 将数字信号变换成便于在模拟通信线路中传输的信号称为调制
 B) 以原封不动的形式将来自终端的信息送入通信线路称为调制解调
 C) 在计算机网络中,一种传输介质不能传送多路信号
 D) 在计算机局域网中,只能共享软件资源,而不能共享硬件资源
(6) 各种网络传输介质
 A) 具有相同的传输速率和相同的传输距离
 B) 具有不同的传输速率和不同的传输距离
 C) 具有相同的传输速率和不同的传输距离
 D) 具有不同的传输速率和相同的传输距离
(7) 多媒体计算机系统的两大组成部分是
 A) 多媒体功能卡和多媒体主机
 B) 多媒体通信软件和多媒体开发工具
 C) 多媒体输入设备和多媒体输出设备
 D) 多媒体计算机硬件系统和多媒体计算机软件系统
(8) 按通信距离划分,计算机网络可以分为局域网和广域网。下列网络中属于局域网的是
 A) Internet B) CERNET C) Novell D) 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:*.P B) REN A:*.PAS *.P
 B) REN A:.PAS A:.P D) REN A:.PAS .P
(13) 设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,正确的DOS命令为
 A) CD D2 B) CD D2\ C) CD \D2 D) CD D1\D2
(14) 设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT 连接后以文件名Y.TXT存放到A盘的当前目录中,正确的DOS命令为
 A) COPY A.TXT+X.TXT A:Y.TXT B) COPY B:A.TXT+X.TXT A:Y.TXT
 B) COPY B:A.TXT+B:X.TXT>Y.TXT D) COPY B:A.TXT+B:X.TXT Y.TXT
(15) 下列DOS命令中正确的是
 A) REN \USER\A.TXT \B.TXT B) CD \
 C) TYPE *.TXT D) MD \
(16) 以下选项中属于C语言的数据类型是
 A) 复数型 B) 逻辑型 C) 双精度型 D) 集合型
(17) 在C语言中,不正确的int类型的常数是
 A) 32768 B) 0 C) 037 D) 0xAF
(18) 语句:printf("%d",(a=2)&&(b= -2);的输出结果是
 A) 无输出 B) 结果不确定 C) -1 D) 1
(19) 下列描述中不正确的是
 A) 字符型数组中可以存放字符串
 B) 可以对字符型数组进行整体输入、输出
 C) 可以对整型数组进行整体输入、输出
 D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
(20) 设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是
 A) 1 B) 0 C) -1 D) 2
(21) 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是
 A) c=b=a; B) (a=c) ‖(b=c) ;
 C) (a=c) &&(b=c); C) a=c=b;
(22) 以下程序的输出结果是
 A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1
 main( )
 { int x=10,y=10,I;
 for(i=0;x>8;y=++i)
 printf("%d,%d ",x--,y);
 }
(23) 以下程序的输出结果是
 A) 5 2 B) 5 1 C) 5 3 D) 9 7
 main( )
 { 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)6 B) 6789 C) '6' D) 789
 main( )
 { 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 6 C) 6 12 D) 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) 12 B) 8 C) 6 D) 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 0 B) 3 1 C) 3 2 1 D) 2 1 0
 main( )
 { int n=4;
 while(n--)printf("%d ",--n);
 }
(30) 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是
 A) p+1 B) a+1 C) a++ D) ++p
(31) 以下程序的输出结果是
 A) 17,021,0x11 B) 17,17,17
 B) 17,0x11,021 D) 17,21,11
 main( )
 { int k=17;
 printf("%d,%o,%x \n",k,k,k);
 }
(32) 以下程序的输出结果是
 A) -1 1 B) 0 1 C) 1 0 D) 0 0
 main( )
 { int a= -1,b=1,k;
 if((++a<0)&& ! (b-- <=0))
 printf("%d %d\n",a,b);
 else
 printf("%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 abc B) struct
 { double a; { double a;
 char b[10]; char b[10];
 } s; } s;
 C) struct ABC D) 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>a B) *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) ihgfedcba B) abcdefghi C) abcdedeba D) ihgfefghi
 #include
 main( )
 { 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 9 B) 6 6 9 C) 6 15 15 D) 6 6 15
 int 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) 123456780 B) 123 456 780 C) 12345678 D) 147
 main( )
 { 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) 1 B) 4 C) 7 D) 5
 #include
 int 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) 9 B) 6 C) 36 D) 18
 #define f(x) x*x
 main( )
 { int a=6,b=2,c;
 c=f(a) / f(b);
 printf("%d \n",c);
 }
(46) 以下程序的输出结果是
 A)4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8
 main( )
 { 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) AfghdEFG B) Abfhd C) Afghd D) Afgd
 #include
 main( )
 { 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的值赋给指针变量p
 D) 语句"*p=r;"取变量r的值放回r中
(50) 以下程序的输出结果是
 A) 编译不通过,无输出 B) aceg
 C) acegi D) abcdefghi
 main( )
 { int i;
 for(i='A';i<'I';i++,i++) printf("%c",i+32);
 printf(" \n");
 }

二、填空题(每空2分,共40分)
 请将每空的正确答案写在答题卡【1】至【20】序号的横线上, 答在试卷上不得分。
(1) DOS命令分为内部命令与外部命令,PATH命令是 【1】 命令。
(2) 设当前盘为A盘,当前目录为\X\Y,A盘上的一个文件QR.C 在当前目录下的子目录W中。现已将A盘的当前目录改为\D\XY,当前盘改为C盘,如果需指定A盘上的该文件应写成 【2】 。
(3) 为了得到XCOPY命令的在线帮助,可使用的DOS命令文件一为 【3】 。
(4) 在DOS系统下,代表键盘与显示器的设备文件名为 【4】 。
(5) 在DOS系统下,可以直接执行的文件的扩展名除.FXE外,还有两个是 【5】 。
(6) 若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是 【6】 。

 int b,c; float a;
 scanf("%f,%d,c=%d",&a,&b,&c);
 .
 .
 .
(7) 下列程序的输出结果是 【7】 。
 #include
 main( )
 { char b[30],*chp;
 strcpy(&b[0],"CH");
 strcpy(&b[1],"DEF");
 strcpy(&b[2],"ABC");
 printf("%s \n",b);
 }
(8) 下列程序的输出结果是 【8】 。
 int t(int x,int y,int cp,int dp)
 { cp=x*x+y*y;
 dp=x*x-y*y;
 }
 main( )
 { int a=4,b=3,c=5,d=6;
 t(a,b,c,d);
 printf("%d %d \n",c,d);
 }
(9) 下列程序中字符串中各单词之间有一个空格,则程序的输出结果是 【9】 。
 #include
 main( )
 { char strl[]="How do you do", *p1=strl;
 strcpy(strl+strlen(strl)/2,"es she");
 printf("%s \n",pl);
 }
(10) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
 main( )
 { float x[1000], sum=0.0, ave, a;
 int n=0, i;
 printf("Enter mark:\n");scanf("%f",&a);
 while(a>=0.0&& n<1000)
 { sum+ 【10】 ; x[n]= 【11】 ;
 n++; scanf("%f",&a);
 }
 ave= 【12】 ;
 printf("Output:\n");
 printf("ave=%f\n",ave);
 for (I=0;I if 【13】 printf (“%f\n”,x[I]);
 }
(11) 有以下定义和语句,则sizeof(a)的值是 【14】 ,而sizeof(a.share)的值是 【15】
struct date{ int day;
 int month;
 int year;
 union{int share1
 float share2;
 }share;
 }a;
(12) 以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。
 #include
 main( )
 { FILE *fp;
 char ch,fname[32]; int count=0;
 printf("Input the filename :"); scanf("%s",fname);
 if((fp=fopen( 【16】 ,"w+"))==NULL)
 { printf("Can't open file:%s \n",fname); exit(0);}
 printf("Enter data:\n");
 while((ch=getchar())!="#"){ fputc(ch,fp); count++;}
 fprintf( 【17】 ,"\n%d\n", count);
 fclose(fp);
 }
(13) 以下函数creatlist用来建立一个带头节点的单链表,链表的结构如下图所示,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个节点的next域放入NULL,作为链表结束标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。
 struct node
 { char data;
 struct node * next;
 };
 .
 .
 .
 【18】 creatlist( )
 { struct node * h,* s,* r; char ch;
 h=(struct node *)malloc(sizeof(struct node));
 r=h;
 ch=getchar( );
 { s=(struct node *)malloc(sizeof(struct node));
 s->data= 【19】 ;
 r->next=s; r=s;
 ch=getchar( ); }
 r->next= 【20】 ;
 return h;
 }




1999年9月全国计算机等级考试二级笔试答案
C语言
一、选择题((1)--(40)题每题1分,(41)--(50)题每题2分,共60分。
(1)B (2)D (3)D (4)D (5)A (6)B (7)D (8)C (9)A (10)A
(11)C (12)B (13)C (14)D (15)B (16)C (17)A (18)D (19)C (20)B
(21)C (22)D (23)C (24)B (25)A (26)D (27)B (28)D (29)A (30)C
(31)D (32)C (33)A (34)B (35)C (36)B (37) (38) (39) (40)
(41) (42)C (43)C (44)D (45)C (46)B (47)D (48)A (49)D (50)B

二、填空题(每空2分,共40分)
(1)内部
(2)A:\X\Y\W\OR.C
(3) XCOPY/?或XCOPY/H
(4) CON
(5) COM和.BAT
(6) 5.0,4,c=3
(7)CDABC
(8) 56
(9) How des she
(10) =a
(11) a
(12)sum/n
(13)x[i](14)
(15)
(16) fname
(17) fp
(18) struct node *
(19) ch
(20) NULL



 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50