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

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

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

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


(1) 下列电子邮件地址中正确的是(其中□表示空格)
  A) Malin&ns.cnc.ac.cn B) [email protected]
  C) Lin□Ma&ns.cnc.ac.cn D) Lin□[email protected]

(2) 下列说法中正确的是
  A) 为了使用Novell网提供的服务,必须采用FTP协议   B) 为了使用Internet网提供的服务,必须采用TELNET协议
  C) 为了使用Novell网提供的服务,必须采用TCP/IP协议   D) 为了使用Internet网提供的服务,必须采用TCP/IP协议

(3) 下列说法中不正确的是
  A) 调制解调器(Modem)是局域网络设备   B) 集线器(Hub)是局域网络设备
  C) 网卡(NIC)是局域网络设备   D) 中继器(Repeater)是局域网络设备

(4) 十进制数397的十六进制值为
  A) 18D B) 18E C) 277 D) 361

(5) 下列说法中不正确的是
  A) CD-ROM是一种只读存储器但不是内存储器   B) CD-ROM驱动器是多媒体计算机的基本部分
  C) 只有存放在CD-ROM盘上的数据才称为多媒体信息   D) CD-ROM盘上最多能够存储大约650兆字节的信息

(6) Windows应用环境中鼠标的拖动操作不能完成的是
  A) 当窗口不是最大时,可以移动窗口的位置   B) 当窗口最大时,可以将窗口缩小成图标
  C) 当窗口有滚动条时可以实现窗口内容的滚动   D) 可以将一个文件移动(或复制)到另一个目录中去

(7) 从Windows中启动MS-DOS方式进入了DOS状态,如果想回到Windos状态,在DOS提示符下,应键入的命令为
  A) EXIT B) QUIT C) WIN D) DOS -U

(8) 要在WINDOWS标准窗口的下拉菜单中选择命令,下列操作错误的是
  A) 用鼠标单击该命令选项   B) 用键盘上的上下方向键将高亮度条移至该命令选项后再按回车键
  C) 同时按下ALT键与该命令选项后括号中带有下划线的字母键
  D) 直接按该命令选项后面括号中带有下划线的字母键

(9) ASCII码(含扩展)可以用一个字节表示,则可以表示的ASCII码值个数为
  A) 1024 B) 256 C) 128 D) 8O

(10) 字长为32位的计算机是指
  A) 该计算机能够处理的最大数不超过232   B) 该计算机中的CPU可以同时处理32位的二进制信息
  C) 该计算机的内存量为32MB   D) 该计算机每秒钟所能执行的指令条数为32MIPS

(11) 在DOS系统中,下列文件名中非法的是
  A) ABCDEFG1 B) ABCDEFG1.234 C)ABCD_EFG D)ABCD\EFG

(12) DOS系统启动后,下列文件中驻留内存的是
  A) CONFIG.SYS B) COMMAND.COM C) AUTOEXEC.BAT D) MEM.EXE

(13) DOS下的“DIR *2”命令将列出当前目录下的
  A) 所有名字末尾为字符2的非隐含文件和目录   B) 所有名字末尾为字符2的非隐含文件
  C) 所有非隐含文件   D) 所有非隐含文件和目录

(14) 软驱的盘符为A,A盘上只有一个目录\XYZ,而\XYZ下有若干子目录和文件,若想把A盘的所有内容复制到C盘根目录下,应使用的命令为
  A) COPY A:\*.* C: B) COPY A:\*.* C:\*.*
  C) XCOPY A:\*.* C:\ /S D) DISKCOPY A: C:

(15) 若要将当前盘目录下的文件A.TXT连接在文件B.TXT后面,应使用的命令为
  A) COPY A.TXT>>B.TXT B) MOVE A.TXT>>B.TXT
  C) PATH A.TXT>>B.TXT D) TYPE A.TXT>>B.TXT

(16) 若变量已正确定义并赋值,下面符合C语言语法的表达式是
  A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b

(17) C语言中运算对象必须是整型的运算符是
  A) %= B) / C) = D)〈=

(18) 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是
  A) 1 B) 2 C) 2.0 D) 2.5

(19) 若变量a、i已正确定义,且i已正确赋值,合法的语句是
  A) a==1 B) ++i; C) a=a++=5; D) a=int(i);

(20) 若有以下程序段,
  int c1=1,c2=2,c3;
  c3=1.0/c2*c1;
  则执行后,c3中的值是
  A) 0 B) 0.5 C) 1 D) 2

(21) 有如下程序
  main( )
  { int y=3,x=3,z=1;
  printf(“%d %d\n”,(++x,y++),z+2);
  }
  运行该程序的输出结果是
  A) 3 4 B) 4 2 C) 4 3 D) 3 3

(22) 能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是
  A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0   D) a>=10‖a<=0

(23) 有如下程序
  main( )
  { int x=1,a=0,b=0;
  switch(x){
  case 0: b++;
  case 1: a++
  case 2: a++;b++
  }
  printf(“a=%d,b=%d\n”,a,b);
  }
  该程序的输出结果是
  A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2

(24) 有如下程序
  main( )
  { float x=2.0,y;
  if(x<0.0) y=0.0;
  else if(x<10.0) y=1.0/x;
  else y=1.0;
  printf(“%f\n”,y);
  }
  该程序的输出结果是
  A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000

(25) 有如下程序
  main( )
  { int a=2,b=-1,c=2;
  if(aif(b<0) c=0;
  else c++
  printf(“%d\n”,c);
  )
  该程序的输出结果是
  A} 0 B} 1 C} 2 D} 3

(26) 有如下程序
  main( )
  { int i,sum;
  for(i=1;i<=3;sum++) sum+=i;
  printf(“%d\n”,sum);
  }
  该程序的执行结果是
  A) 6 B) 3 C) 死循环 D) 0

(27) 有如下程序
  main( )
  { int x=23;
  do
  { printf(“%d”,x--);}
  while(!x);
  }
  该程序的执行结果是
  A) 321 B) 23 C) 不输出任何内容 D) 陷入死循环

(28) 有如下程序
  main( )
  { int n=9;
  while(n>6) {n--;printf(“%d”,n);}
  }
  该程序段的输出结果是
  A) 987 B) 876 C) 8765 D) 9876

(29) 设有说明语句:char a=’\72’;则变量a
  A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法

(30) 有如下函数调用语句
  func(rec1,rec2+rec3,(rec4,rec5);
  该函数调用语句中,含有的实参个数是
  A) 3 B) 4 C) 5 D) 有语法错
  (31) 有如下程序
  int runc(int a,int b)
  { return(a+b);}
  main( )
  { int x=2,y=5,z=8,r;
  r=func(func(x,y),z);
  printf(“%\d\n”,r);
  }
  该程序的输出的结果是
  A) 12 B) 13 C) 14 D) 15

(32) 有如下程序段
  int *p,a=10,b=1
  p=&a; a=*p+b;
  执行该程序段后,a的值为
  A) 12 B) 11 C) 10 D) 编译出错

(33) 对于基类型相同的两个指针变量之间,不能进行的运算是
  A) < B) = C) + D) –

(34) 以下函数返回a所指数组中最小的值所在的下标值
  fun(int *a, int n)
  { int i,j=0,p;
  p=j;
  for(i=j;iif(a[i]return(p);
  )
  在下划线处应填入的是
  A) i=p B} a[p]=a[i] C} p=j D} p=i

(35) 有如下程序
  long fib(int n)
  { if(n>2) return(fib(n-1)+fib(n-2));
  else return(2);
  }
  main( )
  { printf(“%d\n”,fib(3));
  该程序的输出结果是
  A} 2 B} 4 C} 6 D} 8

(36) 在C语言中,函数的隐含存储类别是
  A) auto B) static C) extern D) 无存储类别

(37) 有如下程序
  #define N 2
  #define M N+1
  #define NUM 2*M+1
  #main()
  { int i;
  for(i=1;i<=NUM;i++)printf(“%d\n”,i);
  }
  该程序中的for循环执行的次数是
  A) 5 B) 6 C) 7 D) 8

(38) 有以下函数
  char fun(char *p)
  { return p; }
  该函数的返回值是
  A) 无确切的值 B) 形参p中存放的地址值
  B) 一个临时存储单元的地址 D) 形参p自身的地址值

(39) 有如下程序段
  int a=14,b=15,x;
  char c=’A’;
  x=(a&&b)&&(c<’B’);
  执行该程序段后,x的值为
  A) ture B) false C) 0 D) 1

(40) 若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是
  A) EOF B) 0 C) 非零值 D) NULL

(41) 若有以下说明和定义
  fun(int *c){ }
  main()
  { int (*a)()=fun,*b(),w[10],c;
  ┆
  }
  在必要的赋值之后,对fun函数的正确调用语句是
  A) a=a(w); B) (*a)(&c); C) b=*b(w); D) fun (b);

(42) 有如下说明
  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
  则数值为9的表达式是
  A) *P+9 B) *(P+8) C) *P+=9 D) P+8

(43) 有如下程序
  main( )
  { int n[5]={0,0,0},i,k=2;
  for(i=0;iprintf(“%d\n”,n[k]);
  )
  该程序的输出结果是
  A} 不确定的值 B} 2 C} 1 D} 0

(44) 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是
  A) &t[3][2] B) t[3] C) t[1] D) t[2]

(45) 有如下程序
  main( )
  { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
  for(i=1;i<3;i++)
  for(j=0;jprintf(“%d\n”,s);
  )
  该程序的输出结果是
  A} 18 B} 19 C} 20 D} 21

(46) 有如下定义
  struct person{char name[9]; int age;};
  strict person class[10]={“Johu”, 17,
  “Paul”, 19
  “Mary”, 18,
  “Adam 16,};
  根据上述定义,能输出字母M的语句是
  A) prinft(“%c\n”,class[3].mane);   B) pfintf(“%c\n”,class[3].name[1]);
  C) prinft(“%c\n”,class[2].name[1]);   D) printf(“%^c\n”,class[2].name[0]);

(47) 以下对结构体类型变量的定义中,不正确的是
  A) typedef struct aa B) #define AA struct aa
  { int n; AA {int n;
  float m; float m;
  }AA; }td1;
  AA td1;
  C) struct D) struct
  { int n; { int n;
  float m; float m;
  }aa; }td1;
  stuct aa td1;

(48) 若已建立如下图所示的单向链表结构, 在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是
  A) p =p->next; s->next=p; p->next=s;   B) p =p->next; s->next=p->next; p->next=s;
  C) s->next=NULL; p=p->next; p->next=s;   D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;

(49) 有如下程序
  main()
  { char s[]=”ABCD”, *P;
  for(p=s+l; p)
  该程序的输出结果是
  A} ABCD B} A C} B D} BCD
  BCD B C CD
  CD C D D
  D D

(50) 有如下程序
  main()
  { char ch[2][5]={“6937”,”8254”},*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’;j+=2)
  s=10*s+p[i][j]-‘0’;
  printf(“%d\n”,s);
  }
  该程序的输出结果是
  A) 69825 B) 63825 C) 6385 D) 693825

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


(1) 在DOS状态下,当执行当前盘目录中的程序A.EXE时,为了将本该在屏幕上显示的运行结果输出到文件A.DAT中,应使用的DOS命令为 [1] 。

(2) 在XCOPY、PATH、TREE三个DOS命中,属于内部命令的是令是 [2] 。

(3) 设当前盘为C盘,为了将当前盘当前目录中第三个字符为X的所有文件同名复制到A盘的当前目录中,应使用的DOS命令为 [3] 。

(4) 要将当前盘的目录A\B\C设置为当前目录,应使用的DOS命令为 [4]。

(5) 计算机网络按通信距离划分为局域网与广域网,Novell网属于 [5] 。

(6) 以下程序的输出结果是 [6] 。
  main()
  { unsigned short a=65536; int b;
  printf(“%d\n”,b=a);
  }

(7) 若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 [7] 。
  c=(a-=(b-5));
  c=(a%11)+(b=3);

(8) 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 [8] 。

(9) 要使以下程序段输出10个整数,请填入一个整数。
  for(i=0;i<= [9] ;printf(“%d\n”,i+=2));

(10) 函数pi的功能是根据以下近似公式求π值:
  (π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
  现在请你在下面的函数中填空,完成求π的功能。
  #include “math.h”
  double pi(long n)
  { double s=0.0; long i;
  for(i=1;i<=n;i++)s=s+ [10] ;
  return(sqrt(6*s));
  }

(11) 若输入字符串:abcde<回车>,则以下while循环体将执行 [11] 次。
  While((ch=getchar())==’e’) printf(“*”);

(12) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
  void func(int x,int y, [12] z)
  { *z=x+y; }

(13) 若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 [13] 。
  int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

(14) 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部[14] 。要求形参名为b。
  main()
  { double s[10][22];
  int n; ┆
  ┆
  fun(s);
  ┆
  }

(15) 以下程序的输出结果是 [15] 。
  void fun()
  { static int a=0;
  a+=2; printf(“%d”,a);
  }
  main()
  { int cc;
  for(cc=1;cc<4;cc++) fun()
  printf(“\n”);
  }

(16) 以下程序的输出结果是 [16] 。
  #define MAX(x,y) (x)>(y)?(x):(y)
  main()
  { int a=5,b=2,c=3,d=3,t;
  t=MAX(a+b,c+d)*10;
  printf(“%d\n”,t);
  }

(17) 若要使指针p指向一个double类型的动态存储单元,请填空。
  p= [17] malloc(sizeof(double));

(18) 设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 [18] 。
  Struct stud
  { char num[6];
  int s[4];
  double ave;
  } a,*p;

(19) 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
  Strcen(char a[], char b[])
  { int num=0,n=0;
  while(*(a+num)!= [19] ) num++;
  while(b[n]){*(a+num)=b[n]; num++; [20] ;}
  return(num);
  }
答案将在后期陆续公布……敬请关注!念时

你可能感兴趣的:(C语言)