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

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

更新于:2007年9月19日   念时

一、选择题((1)--(40)每个选项1分,(41)--(50)每个选项2分,共60分)
   下列各题A)、B)、C)、D)、四个有选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。


(1)通常所说的主机主要包括
  A)CPU   B)CPU和内存   C)CPU、内存与外存  D)CPU、内存与硬盘

(2)在微机系统中,最基本的输入输出模块BIOS存放在
  A)RAM中  B)ROM中  C)硬盘中  D)寄存器中

(3)一个24*24点阵的汉字字形信息所占的字节数为
  A)2   B)24   C)32   D)72

(4)bit的意思是
  A)字  B)字长  C)字节  D)二进制位

(5)某学校的工资管理程序属于
  A)系统程序  B)应用程序   C)工具软件  D)文字处理软件

(6)与十六进制数BB等值的十进制数是
  A)187   B)188   C)185   D)186

(7)设一张软盘已染上病毒,能清除病毒的措施是
  A)删除该软盘上的所有文件  B)格式化该软盘
  C)删除该软盘上的所有可执行文件  D)删除该软盘上的所有批处理文件

(8)一张3.5英寸双面高密度软盘片的容量为
  A)360KB   B)720KB   C)1.44MB   D)1.2MB

(9)与二进制小数0.1等值的十六进制小数为
  A)0.1   B)0.2   C)0.4   D)0.8

(10)DOS系统的热启动与冷启动的不同之处为热启动时
  A)不检测键盘、处设接口与内存  B)不提示用户输入日期与时间
  C)不用装入COMMAND.COM文件  D)不能从软盘启动

(11)为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令
  A)COPY K1K2K3 K4   B)COPY K1K2K3K4   C)COPY K1K2K3K4 K4   D)COPY K4K1K2K3

(12)下列文件名中可以作为批处理文件名的是
  A)AUTOEXC.C   B)AUTOEXEC  C)ATX.BAT   D)AUTO.TXT

(13)要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令
  A)DIR 、PRN   B)TYPE 、PRN   C)DIR PRN   D)TYPE PRN

(14)设可执行文件ABC.EXE 所需要的本该由键盘输入的数据已经按格式存放在文件XYZ 中,并要求执行结果放在文件XYZ 中输入数据的后面。下列命令中正确的是
  A)ABC XYZ   B)ABC XYZ   C)ABC   D)XYZ

(15)设当前盘中某一目录路径为、A、B、C,当前目录为、A.下列命令中肯定出错的是
  A)MD 、A、C   B)CD   C)MD 、A、B、A   D)MD 、A、B

(16)设A 盘的目录结构如下:
  根目录
  │
  ┌─────┬┴──┬───┬───┬────┐
  ││││││
  ABC D1子目录DX.C Q.DAT D2子目录A.FOR
  ││
  ┌────┬─┴──┬───┐┌───┬───┐
  │││││││
  B.PAS D3子目录Y.BAS A.C A1.C D4子目录XYZ.C
  │
  ┌────┬────┬────┐
  ││││
  QR.C NA.C A.TXT B.C
  如果当前盘为C 盘,A 盘的当前目录为、D2,则下列对A 盘上文件QR.C 的指定中,合法的是
  A)、D2、D4、QR.C   B)D4、QR.C   C)A:D4、QR.C   D)A:D2、D4、QR.C

(17)下列DOS命令中,有错误的是
  A)TYPE AAB.FORCON   B)TYPE ?AB.FOR   C)COPY *。C CON   D)COPY CON PRN

(18)设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C 盘根目录下的文件XYZ.TXT的后面,正确的命令是
  A)COPY C:、XYZ.TXTAB1.TXT   B)COPY AB1.TXTC:、XYZ.TXT
  C)TYPE AB1.TXTC:、XYZ.TXT   D)AB1.TXTC:、XYZ.TXTC:、XYZ.TXT

(19)下列命令中合法的是
  A)DISKCOPY A:A:  B)DISKCOPY A:C:   C)DISKCOPY C:A:  D)DISKCOPY C:D:

(20)设当前盘中某一目录路径为、A、B、C、D、XU,当前目录为、A.要将根目录下扩展名为。C的所有文件复制到当前目录下,并将扩展名改为。FOR,应使用命令
  A)COPY 、*。C *。FOR   B)COPY *。C 、A、*。FOR   C)COPY *。FOR 、*。C   D)COPY 、A、*。C *。FOR

(21)下列不正确的转义字符是
  A)'、、'  B)'、“  C)'074'  D)'、0'”

(22)若有以下定义:
  char a;int b;
  float c;double d;
  则表达式a*bd--c值的类型为
  A)float   B)int   C)char   D)double

(23)表示关系x《=y《=z的c语言表达式为
  A)(X《=Y)&&(Y《=Z)  B)(X《=Y)AND(Y《=Z)
  C)(X《=Y《=Z)  D)(X《=Y)&(Y《=Z)

(24)设a=1,b=2,c=3,d=4,则表达式:a《b?a:c《d?a:d的结果为
  A)4   B)3   C)2   D)1

(25)设x为int型变量,则执行以下语句后,x的值为
  x=10;x=x--=x--x;
  A)10   B)20   C)40   D)30

(26)下列可作为C语言赋值语句的是
  A)x=3,y=5   B)a=b=6   C)i--;  D)y=int(x);

(27)设x,y,z,t均为int型变量,则执行以下语句后,t的值为
  x=y=z=1;
  t=x||y&&z;
  A)不定值  B)2   C)1   D)0

(28)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
  scanf(“i=%d,f=%f”,&i,&f);
  为了把100和765.12分别赋给i和f,则正确的输入为
  A)100765.12   B)i=100,f=765.12   C)100765.12   D)x=100y=765.12

(29)设x和y均为int型变量,则执行下的循环后,y值为
  for(y=1,x=1;y《=50;y)
  {if(x=10))break;
  if (x%2==1)
  {x=5;continue;}
  x--=3;
  }
  A)2   B)4   C)6   D)8

(30)给出以下定义:
  char x[]=“abcdefg”;
  char y[]={'a','b','c','d','e','f','g'};
  则正确的叙述为
  A)数组X和数组Y等价  B)数组x和数组Y的长度相同
  C)数组X的长度大于数组Y的长度  D)数组X的长度小于数组Y的长度

(31)以下叙述中不正确的是
  A)在不同的函数中可以使用相同名字的变量   B)函数中的形式参数是局部变量
  C)在一个函数内定义的变量只在本函数范围内有效   D)在一个函数内的复合语句中定义的变量在本函数范围内有效

(32)假定a和b为int型变量,则执行以下语句后b的值为
  a=1;b=10;
  do
  {b--=a;a;}
  while (b--《0);
  A)9   B)--2   C)--1   D)8

(33)设j为int型变量,则下面for循环语句的执行结果是
  for(j=10;j3;j--)
  {if(j%3)j--;
  --j;--j;
  printf(“%d ”,j);
  }
  A)6 3   B)7 4   C)6 2   D)7 3

(34)设有以下宏定义:
  #define N 3
  #define Y(n)((N1)*n)
  则执行语句:z=2 *(NY(51));后,z的值为
  A)出错  B)42     C)48   D)54

(35)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
  A)k=*P1*P2;  B)p2=k;  C)P1=P2;  D)K=*P1 *(*P2);

(36)设有如下定义:
  int arr[]={6,7,8,9,10};
  int *ptr;
  则下列程序段的输出结果为
  ptr=arr;
  *(ptr2)=2;
  printf (“%d,%d、n”,*ptr,*(ptr2));
  A)8,10   B)6,8   C)7,9   D)6,10

(37)以下程序的输出结果是
  main()
  {int i,k,a[10],p[3]:
  K=5;
  for (i=0;i《10;i)a[i]=i;
  for (i=0;i《3;i)p[i]=a[i*(i1)];
  for (i=0;i《3;i)k=p[i]*2;
  printf(“%d、n”,k);
  }
  A)20   B)21   C)22   D)23

(38)执行以下程序段后,m的值为
  int a[2][3]={{1,2,3},{4,5,6}};
  int m,*p;
  p=&a[0][0];
  m=(*p)*(*(p2))*(*(p4));
  A)15   B)14   C)13   D)12

(39)有以下程序段
  char arr[]=“ABCDE”;
  char *ptr;
  for(ptr=arr;ptr《arr5;ptr)printf(“%s、n”,ptr);
  输出结果是
  A)ABCD   B)A   C)E   D)ABCDE
  B D BCDE
  C C CDE
  D B DE
  E A E

(40)有以下程序
  main()
  {int x,i;
  or(i=1;i《=50;i)
  {x=i;
  if(x%2==0)
  if(x%3==0)
  if(x%7==0)
  printf(“%d,i);”
  }
  }
  输出结果是
  A)28   B)27   C)42   D)41

(41)有下列程序
  #include《stdio.h
  main()
  {union
  {int k;
  char i[2];
  }*s,a;
  s=&a;
  s--i[0]=0x39;s--i[1]=0x38;
  printf(“%x、n”,s--k);
  }
  输出结果是
  A)3839   B)3938   C)380039   D)390038

(42)有以下程序
  #include 《stdio.h
  main()
  {int a,b,c=246;
  a=c/100%9;
  b=(--1)&&(--1);
  printf(“%d,%d、n”,a,b);
  }
  输出结果是
  A)2,1   B)3,2   C)4,3   D)2,--1

(43)设有如下定义:
  int (*ptr)*();
  则以下叙述中正确的是
  A)ptr是指向一维组数的指针变量   B)ptr是指向int型数据的指针变量
  C)ptr是指向函数的指针,该函数返回一个int型数据   D)ptr是一个函数名,该函数的返回值是指向int型数据的指针

(44)有以下程序
  #include 《stdio.h
  struct stu
  {int num;
  char name[10];
  int age;
  };
  void fun(struct stu *p)
  {printf(“%s、n”,(*p)。name);}
  main()
  {
  struct stu students[3]={{9801,“Zhang”,20},
  {9802,“Wang”,19},
  {9803,“Zhao”,18}};
  fun(students2);
  }
  输出结果是
  A)Zhang   B)Zhao   C)Wang   D)18

(45)设有以下说明和定义:
  typedef union
  {long i;int k[5];char c;}DATE;
  struct date
  {int cat;DATE cow;double dog;}too;
  DATE max;
  则下列语句的执行结果是
  printf (“%d”,sizeof (struct date )sizeof(max));
  A)26   B)30   C)18   D)8

(46)有以下程序
  main()
  {char a[]=“programming”,b[]=“language”;
  char *p1,*p2;
  int i;
  p1=a;p2=b;
  for(i=0;i《7;i)
  if(*(p1i)==*(p2i))printf(“%c”,*(p1i));
  }
  输出结果是
  A)gm   B)rg   C)or   D)ga

(47)有以下程序
  viod fun (int a,int b,int c)
  {a=456;b=567;c=678;}
  main()
  {int x=10,y=20,z=30;
  fun (x,y,z);
  printf(“%d,/%d、n”,c,d);
  }
  输出结果是
  A)30,20,10   B)10,20,30   C)456,567,678   D)678,567,456

(48)有以下程序
  int fun(int x,int y,int *cp,int *dp)
  {*cp=xy;*dp=x--y;}
  main()
  {int a,b,c,d;
  a=30;b=50;
  fun(a,b,&c,&d);
  printf(“%d,%d、n”,c,d);
  }
  输出结果是
  A)50,30   B)30,J50   C)80,--20   D)80,20

(49)有以下程序
  main()
  {int i,j;
  for(j=10;j《11;j)
  {for(i=9;i《j;i)
  if (!(j%i))break;
  if(i=j--1)printf(“%d”,j);
  }
  }
  输出结果是
  A)11   B)10   C)9   D)10 11

(50)有以下程序
  #include “atdio.h”
  int abc(int u,intv);
  main ()
  {int a=24,b=16,c;
  c=abc(a,b);
  printf('%d、n“,c);”
  }
  int abc(int u,int v)
  {int w;
  while(v)
  {w=u%v;u=v;v=w }
  return u;
  }
  输出结果是
  A)6   B)7   C)8   D)9

二、填空题(每空2分,共40分)
   请将每空的正确答案写在答题卡(1)--(20)序号的横线上,答在试卷上不得分。


(1)自动批自理文件名为_______.(1)

(2)DOS命令分为内部命令与外部命令,COMP命令属于_______(2)命令。

(3)设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为。DAT的文件内容。这一条DOS命令应为___(3)。

(4)要将当前盘当前目录下的子目录XYZ中所有扩展名为。BAK 的文件名改成扩展名为。FOR,应使用的DOS命令为___(4)。

(5)设DOS外部命令文件所在的路径均已用PATH命令打通。现要将当前盘当前目录下的文件WST.TXT设置为只读属性,应使用的DOS命令为___(5)。
(6)设x和y均为int型变量,且x=1,y=2,则以下表达式的值为___(6)。1.0x/y

(7)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为___(7)。
  for(i=0,j=10;i《=j;i,j--)k=ij;

(8)设有以下定义的语句:
  int a[3][2]={10,20,30,40,50,60},(*p)[2];
  p=a;
  则*(*(p2)1)值为___(8)。

(9)以下程序的输出结果是___(9)。
   #include 《stdio.h》
   int fun(int x,int y)
   {static int m=0,i=2;
   i=m1;
   m=ixy;
   return m
   }
   main()
   {int j=4,m=1,k;
   k=fun(j,m);printf(“%d,”,k);
   k=fun(j,m);printf(“%d、n”,k);
   }

(10)函数fun的功能是:使一个字符串按逆序存放,请填空
   void fun (char str[])
  {char m;int i,j;
   for(i=0,j=strlen(str);i《____(10);i,j--)
   {m=str[i];
   str[i]=___(11);
   str[j--1]=m;
   }
   printf(“%s、n”,str);
   }

(11)以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
   #include“ctype.h”
   #include“stdio.h”
   main()
   {char str[81],*sptr;
   int i;
   for(i=0;i《80;i)
   {str[i]=getchar();
   if(str[i]=='、n')break;
   }
   str[i]=____(12);
   sptr=str;
   while(*sptr)putchar(*sptr____(13));
   }

(12)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为--1.请填空。
   #include
   main()
   {char str[100],str2[100],c;
   int i,s;
   printf(“、n input string 1:、n”);gest(str1);
   printf(“、n input string 2:、n”);gest(str2);
   i=0;
   while((strl[i]==str2[i]&&(str1[i]!=____(14)))
   i;
   s=____(15);
   printf(“%d、n”,s);
   }

(13)以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。
   #include《stdio.h
   main()
   {FILE *fp;
   char str[100];int i=0;
   if((fp=fopen(“text.txt”,____(16)))==NULL)
   {printf(“can't open this file.、n”);exit(0);}
   printf(“input astring:、n”);gest(str);
   while (str[i])
   {if(str[i]='a'&&str[i]《='z')
   str[i]=____(17);
   fputc(str[i],fp);
   i;
   }
   fclose(fp);
   fp=fopen(“test.txt”,____(18));
   fgets(str,100,fp);
   printf(“%s、n”,str);
   fclose(fp);
   }

(14)以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。
   #include.《stdio.h
   main()
   {char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C'
   ,'D','E','F'};
   int c[64],d,i=0,base;
   long n;
   printf(“enter a number:、n”);scanf(“%ld”,&n);
   printf(“enter new base:、n”);scanf(“%d”,&base);
   do
   {c[i]=____(19);
   i;n=n/base;
   }while(n!=0);
   printf(“transmite new base:、n”);
   for(--i;i=0;--i)
   {d=c[i];
   printf(“%c”,b____(20);
   }
   }
答案将在后期陆续公布……敬请关注! 念时

转载于:https://www.cnblogs.com/nianshi/archive/2007/09/19/898922.html

你可能感兴趣的:(1998年9月全国计算机等级考试二级C语言笔试试题)