1999年4月全国计算机等级考试二级C语言试卷(含答案)
发布时间:2006-10-14 8:53:57   收集提供:gaoqian

一、选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 微型计算机的性能主要取决于
A) 内存 B) 中央处理器 C) 硬盘 D) 显示卡
(2) 有一个数值152,它与十六进制数6A相等,那么该数值是
A) 二进制数 B) 八进制数 C) 十进制数 D) 四进制数
(3) 使用超大规模集成电路制造的计算机应该归属于
A) 第一代 B) 第二代 C) 第三代 D) 第四代
(4) 已知英文字母a的ASCII代码值是十六进制数61H,那么字母d的ASCII代码值是
A) 34H B) 54H C) 24H D) 64H
 (5) 一片存储容量是1.44MB的软磁盘,可以存储大约140万个
A) ASCII字符 B) 中文字符 C) 磁盘文件 D) 子目录
 (6) 在MS-DOS环境中同时按下[Ctrl]和[Break]两个键,其作用是
A) 终止当前操作 B) 暂停当前操作 C) 关机 D) 热启动
 (7) 将二进制数10000001转换为十进制数应该是
A) 127 B) 129 C) 126 D) 128
 (8) 磁盘处于写保护状态,那么磁盘中的数据
A) 不能读出,不能删改,也不能写入新数据 B) 可以读出,不能删改,也不能写入新数据
C) 可以读出,可以删改,但不能写入新数据 D) 可以读出,不能删改,但可以写入新数据
 (9) 微型机启动后,DOS提示符是C:\>,现提示符变为C:\USER>,则说明刚执行过命令
A) PROMPT B) PROMPT USER C) PROMPT SP$G D) CD USER
(10) MS-DOS文件系统目录的组织形式属于
A) 关系型结构 B) 网络型结构 C) 树型结构 D) 直线型结构
(11) 应用软件系统TH的总容量大约1MB,其主要程序文件存放在C:\TH目录中,而数据文件存放在C:\TH\DATA目录中,如果将它们完整地复制到A盘, 应该使用的命令是
A) XCOPY C:\TH A:\ B) XCOPY C:\TH A:\ /S
C) XCOPY C:\TH A:\ /M D) XCOPY C:\TH A:\ /P
(12) 执行COPY A.TXT+B.TXT 这个DOS命令后,得到的磁盘文件是
A) A.TXT B) B.TXT C) AB.TXT D) A+B.TXT
(13) 在WINDOWS中,将一个应用程序窗口最小化之后,得到的磁盘文件是
A) 仍在后台运行 B) 暂时停止运行 C) 完全停止运行 D) 出错
(14) CD-ROM属于
A) 感觉媒体 B) 表示媒体 C)表现媒体 D)存储媒体
(15) 在因特网(Internet)中电子公告板的缩写是
A) FTP B) WWW C) BBS D) E-mail
(16) 设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为
A) 4 B) 16 C) 32 D) 52
(17) 设有如下的变量定义:
 int i=8, k, a, b;
 unsigned long w=5;
 double x=1, 42, y=5.2;
则以下符合C语言语法的表达式是
A) a+=a-=(b=4)*(a=3) B) x%(-3);
C) a=a*3=2 D) y=float(i)
(18) 假定有以下变量定义:
 int k=7,x=12;
则能使值为3的表达式是
A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5 D) (x%=k)-(k%=5)
(19) 以下叙述中正确的是
A) 输入项可以是一个实型常量,如:
scakf("%f",3.5);
B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如:
scakf("a=%d,b=%d");
C) 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:
scakf("%4.2f",&f);
D) 当输入数据时,必须指明变量地址,例如:
scakf("%f",&f);
(20) 设x和y均为int型变量,则以下语句:x+=y,y=x-y;x-=y;的功能是
A) 把x和y按从大到小排列 B) 把x和y按从小到大排列
C) 无确定结果 D) 交换x和y中的值
(21) 以下程序的输出结果是
A) 10 10 B) 12 12 C) 11 10 D) 11 13
 main()
 { int a=12,b=12;
 printf("%d,%d\n",- -a,+ +b);
 }
(22) 以下程序运行后,输出结果是
A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错
 main()
 { char *s="abcde";
 s+=2;
 printf("%ld\n",s);
 }
(23) 以下程序输出结果是
A) 7 B) 6 C) 5 D) 4
 main()
 { int m=5;
 if(m++>5) printf("%d\n",m);
 esle printf("%d\n",m- -);
 }
(24) 当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为
A) 1 B) 2 C) 3 D) 6
 if(a if(c else
 if(a if(b else x=3;
 else x=6;
 else x=7;
(25) 在执行以下程序时,如果从键盘上输入,ABCdef<回车>,则输出为
A) ABCdef B) abcDEF C) abc D) DEF
 #include
 main()
 { char ch;
 while((ch=getchar())!='\n')
 { if(ch>='A' && ch<='Z') ch=ch+32;
 else if(ch>='a' && ch<='z') ch=ch-32;
 printf("%c",ch);
 }
 printf("\n");
 }
(26) 下面能正确进行字符串赋值操作的语句是
A) char s[5]={"ABCDE"}; B) char s[5]={'A','B','C','D','E'};
C) char *s;s="ABCDEF"; D) char *s; scanf("%s",s);
(27) 执行以下程序段时
A) 循环体将执行一次 B) 循环体将执行两次
C) 循环体将执行无限次 D) 系统将提示有语法错误
 X=-1;
 do {x=x*x; } while(! x);
(28) 执行以下程序后,输出的结果是
A) -1 B) 1 C) 8 D) 0
 main ()
 { int y=10;
 do { y - -;} while(- - y);
 printf("%d\n",y - -);
 }
(29) 在下列选项中,没有构成死循环的程序段是
A) int i=100 B) for( ; ;);
 while(1)
 { i=i%100+1;
 if(i>100)break;
 }
C) int k=1000; D) int s=36;
 do{++k;} while(k>=10000); while(s);--s;
(30) 执行语句: for(i=l:i++<4:);后,变量i的值是
A) 3 B) 4 C) 5 D) 不定
(31) 以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为
A) 8 B) 7 C) 6 D) 5
 #include
 #include
 func { int num=0;
 while(*(str+num)!='\0') num++;
 return(num);
 }
 main()
 { char str[10],*p=str;
 gets(p); printf("%d\n",func(p));
 }
(32) 运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为
A) 2,0 B) 5,0 C) 5,5 D) 2,5
 #include
 mair()
 { int v1=0,v2=0;
 char ch;
 while((ch=getchar())!='#')
 switch(ch)
 { case 'a';
 case 'h';
 default; v1++;
 case '0'; v2++;
 }
 printf("%d,%d\n",v1,v2);
 }
(33) 若以下程序所生成的可执行文件名为filel.exe;当打入以下命令执行该程序时;
 FILEL CHINA BEIJING SHANGHAI
 程序的输出结果是
A) CHINA BEIJING SHANGHAI B) FILEL CHINA BEIJING
C) C B S D) F C B
 main(int argc,char *argv[])
 { while(arge-->0)
 { ++argv;printf("%s ",*argv);}
 }
(34) 下面程序运行的结果是
A) 2ba56 B) 6521 C) 6 D) 62
 main()
 { char ch[7]={65ab21"};
 int i,s=0
 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)
 s=10*s+ch[i]-'0';
 printf("%d\n",s);
 }
(35) 运行下面的程序,如果从键盘上输入:
 ab<回车>
 c <回车>
 def<回车>
则输出结果为
A) a B) a C) ab D) abcdef
b b c
c c d
d d
e
f
 #include
 #define N 6
 main()
 { char c[N];
 int i=0;
 for( ;i for( i=0;i }
(36) 以下程序运行后,输出结果是
A) 8 B) 7 C) 6 D) 5
 #include
 ss(char *s)
 { char *p=s;
 while(*p) p++;
 return(p-s);
 }
 main()
 { char *a="abded";
 int i;
 i=ss(a);
 printf("%d\n",i);
 }
(37) 以下程序运行后,输出结果是
A) 8,15 B) 8,16 C) 8,17 D) 8,8
 func(int a, int b)
 { static int m=0,i=2;
 i+=m+1;
 m=i+a+b;
 return(m);
 }
 main()
 { int k=4,m=1,p;
 p=func(k,m);printf("%d,",p);
 p=func(k,m);printf("%d\n",p);
 }
(38) 以下程序运行后,输出结果是
A) 49.5 B) 9.5 C) 22.0 D) 45.0
 #include
 #define PT 5.5
 #define S(x) PT* x * x
 main()
 { int a=1,b=2;
 printf("%4.1f\n",S(a+b));
 }
(39) 以下程序运行后,输出结果是
A) ABCDEFG B) CDG C) abcdefgh D) abCDefGh
 main()
 { static char a[]="ABCDEFGH",b[]="abCDefGh";
 char *p1,*p2;
 int k;
 p1=a; p2=b;
 for(k=0;k<=7;k++)
 if(*(p1+k)==*(p2+k))
 printf("%c",*(p1+k));
 printf("\n");
 )
(40) 以下程序运行后,a的值是
A) 4 B) 1 C) 0 D) 运行时出错,a无定值
 main()
 { int a,k=4,m=6,*p1=&k,*p2=&m;
 a=p1==&m;
 printf("%d\n",a);
 }
(41) 以下程序运行后,输出结果是
A) 84 B) 99 C) 95 D) 44
 int d=1;
 fun(int p)
 { int d=5;
 d+=p++;
 printf("%d,d);
 }
 main()
 { int a=3;
 fun(a);
 d+=a++;
 printf("%d\n,d);
 }
(42) 以下程序运行后,输出结果是
A) 6385 B) 22 C) 33 D) 693825
 main()
 { char ch[2][5]={'693","825"},*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);
 }
(43) 以下程序运行后,输出结果是
A) 1 B) 7 C) 9 D) 11
 fut(int **s, int p[2][3])
 { **s=p[1][1];}
 main()
 { int a[2][3]={1,3,5,7,9,11}, *p;
 p=(int *) malloc(sizeof(int));
 fut(&p,a);
 printf("%d\n",*P);
 }
(44) 设有如下定义:
 int a=1,b=2,c=3,d=4,m=2,n=2:
 则执行表达式:(m=a>b)&&(n=c>d)后,n的值为
A) 1 B) 2 C) 3 D) 0
(45) 在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是
A) a>b B) aa>b
 main()
 { int s,t,a,b;
 scanf("%d,%d",&a,&b);
 s=1; t=1;
 if(a>0)s=s+1;
 if(a>b)t=s+t;
 else if(a==b) t=5;
 else t=2*s;
 printf("t=%d\n",t);
 }
(46) 以下程序的输出结果是
A) x=4 B) x=8 C) x=6 D) x=12
 main()
 { int i,j,x=0;
 for(i=0;i<2;i++)
 { x++;
 for(j=0;j<=3;j++)
 { if(j%2)continue;
 x++;
 }
 x++;
 }
 printf("x=%d\n",x);
 }
(47) 以下程序运行后,输出结果是
A) 1234567 B) 7654321 C) 1711717 D) 7177171
 #inchude
 #inchude
 fun(char *w, int n)
 { char t, *s1,*s2;
 s1=w: s2=w+n-1;
 while(s1 { t=*s1++;
 *s1=*s2--;
 *s2=t;
 }
 }
 main()
 { char *p;
 p="1234567";
 fun(p,strlen(p));
 puts(p);
 }
(48) 运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为:
A) m=3 B) m=2 C) m=1 D) m=1
 main()
 { int m, n;
 printf("Enter m,n;"); scanf("%d%d", &m,&n):
 while (m!=n)
 { while (m>n)m-=n;
 while (n>m)n-=m;
 }
 printf("m=%d\n",m);
 }
(49) 以下程序运行后,如果从键盘上输入:
 book <回车>
 book <空格><回车>
 则输出的结果是
A) *8 B) #9 C) #6 D) *9
 #include
 main()
 { char a1[80],a2[80],*s1=a1, *s2=a2;
 gets(s1); gets(s2);
 if(! strcmp(s1,s2)) printf("*");
 esle printf("#");
 printf("%d/n",strlen(strcat(s1,s2)));
 }
(50) 以下程序运行后,输出结果是
A) 10000 B) 10010 C) 00110 D) 10100
 main()
 { int y=18,i=0,j,a[8];
 do
 { a[i]=y%2; i++
 y=y/2;
 } while(y>=1)
 for(j=i-1;j>=0;j--) printf("%d",a[j];
 printf("\n");
 }
二、填空题(每空2分,共40分)
 请将每空的正确答案写在答题卡上【1】-【20】序号上,答在试卷上不得分。
(1) DOS中的自动批处理文件的全名是 【1】 。
(2) 在DOS启动盘中,除COMMAND.COM外,还有两个必备的系统文件,它们是MSDOS.SYS(或IBMDOS.COM)与【2】 。
(3) 在DOS下,要将当前目录中AB.TXT文件设置为只读属性,应该使用的完整命令行是【3】 。
(4) 在DOS下,要查看当前目录中所有批处理文件的总字节数,应该使用的完整命令行是 【4】 。
(5) 计算机病毒除有破坏性、潜伏性和激发性外, 还有一个最明显的特性是 【5】 。
(6) 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【6】
 :
 .
 char a[10],b;
 scanf("a=%s b=%c",a,&b);
 :
 .
(7) 下面程序的输出结果是 【7】
 char b[]="ABCD";
 main()
 { char *chp;
 for(chp=b; *chp: chp+=2) printf("%s",chp);
 printf("\n");
(8) 下面程序输出的结果是 【8】
 #define MAX 3
 int a [MAX];
 main()
 { fun1( ); fun2( a ); printf("\n");}
 fun1( )
 { int k, t=0;
 for (k=0; k<MAX; K++,t++) a[k]=t+t;
 }
 fun2(int b[])
 { int k;
 for(k=0; k<NAX; k++) printf("%d", *(b+K));
 }
(9) 以下程序输出的是 【9】
 main( )
 { int a[10]={19,23,44,17,37,28,49,36}, *p;

 p=a;
 printf("%d\n",(p+=3)[3]);
 }
(10) 以下程序输出的是 【10】
 main( )
 { int i=3, j=2;
 char *a="DCBA";
 printf("%c%c\n",a[i],a[j]);
 }
(11) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。
 exchange(int *x, int *y)
 { int t;
 t=*y; *y= 【11】 ; *x= 【12】 ;
 }
(12) 若以下定义和语句,则sizeof(a)的值是 【13】 ,而sizeof(b)的值是 【14】
 struct { int day; char mouth; int year;} a, *b;
 b=&a;
(13) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空.
 fun(int b[ ],int n, int *x)
 { int k, r=0;
 for(k=0;k 【16】 =r;
 }
(14) 变量root有如图所示有存储结构,其中sp是指向字符串的指针域,next 是指向该结构的指针域,data用以存放整型数. 请填空 , 完成此结构的类型说明和变量root的定义





 struct list
 { char *sp;
 【17】 ;
 【18】 ;
 }root;
(15) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.
 #include
 FILE *fp;
 main()
 { int i,j;
 if((fp=fopen( 【19】, "wb"))==NULL) exit(0);
 for(i=0; i<10; i++)
 { scanf("%d",&j);
 fwrite(&j,sizeof(int),1, 【20】 );
 }
 fclose(fp);
}


1999年4月
基础知识知识和C语言程序设计
答案及评分标准

一.选择((1)~(40)题每题1分,(41)~(50)题 每题 2分,共60分)
 (1)B (2)B (3)D (4)D (5)A (6)A (7)B (8)B (9)D (10)C
(11)B (12)A (13)A (14)D (15)C (16)C (17)A (18)D (19)D (20)D
(21)D (22)C (23)B (24)B (25)B (26)C (27)A (28)D (29)C (30)C
(31)D (32)C (33)A (34)C (35)C (36)D (37)C (38)B (39)B (40)C
(41)A (42)A (43)C (44)B (45)C (46)B (47)C (48)C (49)B (50)B
二.填空题(每空2 分,共40分)
 (1) 【1】 AUTOEXEC.BAT
 (2) 【2】 IO.SYS 或IBMBIO.COM
 (3) 【3】 ATTRIB AB.TXT+R AB .TXT
 (4) 【4】 DIR *.BAT或DIR *.BAT\P或DIR *.BAT/W 或DIR*.BAT/W/P或*.BAT/P/W
 (5) 【5】 传染性或传播性
 (6) 【6】 a=1234 b=5 A或a=1234b=5
 (7) 【7】 ABCDCD
 (8) 【8】 024
 (9) 【9】 49
 (10) 【10】AB
 (11) 【11】*X (11) 12 T
 (12) 【13】5 (12) 14 2
 (13) 【15】r+b[k]或b[k]或*(b+k)+r (13) 【16】*x
 (14) 【17】struct list *next (14) 【18】 int data
 说明:以上两个答案(17和18)次序可以颠倒.
 (15) 【19】"bi.dat" (15) 【20】 fp



 
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