1999年4月全国计算机等级考试二级C语言笔试试题

一、选择题((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,那字母子b 的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 $P$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.+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;

  unsinged 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)输入项可以是一个实型常量,如scanf(“%f,”3.5)

  B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(“a=%d,b=%d”)

  C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(“%4.2f”,&f)

  D)当输入数据时,必须指明变量地址,例如:scanf(“%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 10B)12 12C)11 10D)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);

  else printf(“%d\n”,m--);

  }

(24)当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为

  A)1   B)2   C)3   D)6

  if(a<b=

  if(c>d) x=1;

  else

  if(a<c=

  if(b>d) x=2;

  else x=3;

  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)-1B)1 C)8 D)0

  main( )

  { int y=10;

  do {y--;} while(--y);

  printf(“%d\n”,y--);

  }

(29)在下列选项中,没有构成死循环的程序段是

  A) int i=100

  while (1)

  {i=i%100+1;

  if(i>100)break;

  }

  B) for(;;);

  C)int k=1000;

  do{++k} while (k>=1000)

  D)int s=36

  While(s);--s;

(30)执行语句:for(i=1;i++<4;)后;变量i的值是

  A)3   B)4   C)5   D)不定


(31)以下程序运行后,如果从键盘上输入abcde<回车>,则输出结果为

  A)8 B)7 C)6 D)5

  #include

  #include

  func(char str[ ] )

  { 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,0B)5,0C)5,5D)2,5

  #include

  main( )

  {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)若以下程序所生成的可执行文件名不;当打入以下命令执行该程序时;

  FILE1 CHINA BEIJING SHANGHAI

   程序的输出结果是

  A)CHINA BEIJIANG SHANGHAI     B)FILE1 CHINA BEIJING

  C)C B S   D)F C B

  main(int argc,char *argv[])

  { while(argc-->0)

  { ++argv; printf(“%s”,*argv);}

  }

(34)下面程序的运行结果是

  A)12ba56   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)avcdef

  b b c

  c c d

  d d

  e

  f

  #include

  #define N 6

  main( )

  { char c[N];

  int i=o

  for( ;i<N;c[i]=getchar(),i++=

  for( i=0;i>N;i++) putchar(c[i]); printf(“\n”);

(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)运行时出错,无定值   mian()

  { 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=a<b<0   C=0<a<b   D=0>a>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+1;

  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

  #include <stdio.h>

  #include <string.h> fun(char s w, int n)

  { char t,* s1,* s2; s1=w;s2=w+n-1;

  while(s1<s2= { t=*s1++; *s1=s2--; *s2=t; }

  main()

  { char *p; fun(p,strlen(p));

puts(p); }


(48)运行以下程序后,如果从键盘上输入65 14>回车>,则输出结果为

  A=m=3   B=m=2   C=m=1   D=m=0

  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(“*”);

  else 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=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>MAX;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]);

  }