江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2012春江苏省计算机二级C笔试真题

2012春江苏省高校计算机等级考试

二级C笔试真题

 

 

绝密★ 启用前

2012年春

江苏省高等学校非计算机专业学生

计算机基础知识和应用能力等级考试

二级试卷

试卷语种:C语言

 

  明:

1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共12 0分钟;

2.本试卷满分为60,分选择题和填空题,试卷不分AB类型;

3.计算机基础知识部分全部是选择题(20),程序设计部分分为选择题(1 0

  )和填空题(30)两种;

4.选择题用答题卡答题。每一项有ABCD四个可供选择的答案,请选

  择其中一个你认为正确的答案,HB铅笔涂写在答题卡的相应答题号内。

  每选对一项得1,不选或选错不得分;

5.填空题用答题纸答题。请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的

  相应答题号内,每个答案只占一行,不得换行。每填对一个答案得1,

  不填或填错不得分;

6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是

  否填写正确。

7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。待监考人员收

  毕清点后,方可离场。

 

第一部分计算机基础知识

1.  下列有关信息产业、信息化、信息社会等相关的叙述中,错误的是___(1)___   

    A.信息产业是指生产制造信息设备的制造业,不包含信息服务行业

    B.信息化是一个推动人类社会从工业社会向信息社会转变的过程

    C.在信息社会中,信息将借助材料和能源的力量产生重要价值而成为社会进步的基

    本要素

    D.目前我国还处于工业化的中期阶段,需要大力推进信息化与工业化的融合式发展

2.  下列有关数字技术与微电子技术的叙述中,错误的是___(2)___   

    A.数字技术的处理对象是"比特",它只有两种状态(取值)

    B.在计算机中,经常使用称为"触发器"的双稳态电路来存储比特,一个触发器可

    以存储1个比特  

    C.微电子技术以集成电路为核心,现代集成电路所使用的半导体材料主要是硅

    D.所有的IC卡均只能存储数据,不能处理和收发数据

3.  下列有关计算机发展与分类的叙述中,错误的是___(3)___

    A.人们通常根据计算机采用的主要电子元器件的不同,将计算机的发展划分为四代

    B.由于20世纪90年代计算机网络的发展,计算机应用进入了"网络计算模式"

    C.目前所有的服务器产品均为小型计算机、大型计算机或巨型计算机,PC机不能作

    为网络服务器使用

    D.美国的HPDELL和我国的联想、方正、同方等均是知名的PC机品牌

4.  下列有关PCCPU的叙述中,错误的是___(4)___

    A.长期以来,多数PC机采用Intel公司生产的CPU芯片

    B.Intel Core i7是高端的CPU产品,其中i7表示它采用7个内核的结构

    C.目前部分PC机使用AMD公司的CPU芯片,它们与Intel公司的CPU芯片指令

    系统基本一致,因此这些PC机相互兼容

    D.目前我国也能设计、生产PC机的CPU芯片   

5.  下列有关PC机主板上CMOSBIOS的叙述中.错误的是___(5)___   

    A.主板上的CMOS芯片是一种易失性存储器,它通常使用电池供电

    B.BIOS是存储在主板上闪烁存储器中的一组程序.每次机器加电时总是首先执行其

    中的程序

    C.CMOS设置程序存储在CMOS存储器中,它与BIOS无关

    D.CMOS芯片中存储了许多配置信息,包括当前的日期与时间、开机密码等

6.  下列是PC机使用的四种外设接口,其中最新的一种是___(6)___

    A.USB3.0

    B.IEEE.1394b

    C.IDE   

    D.红外线接口(IrDA)

7.  下列有关扫描仪与数码相机的叙述中.错误的是___(7)___

    A.扫描仪分为平板扫描仪、手持扫描仪、滚筒扫描仪等多种类型.相对来说使用平

    板扫描仪的较多

    B.光学分辨率是扫描仪的主要性能指标,其单位为dpi

    C.目前数码相机的成像芯片为CCDCMOS.它可以将光信号转换为电信号

    D.数码相机所拍摄的数字图像以GIF格式存储在存储卡中

8.  光盘分为多种不同类型,其容量大小差异较大。对于单面单层、80mmDVD光盘来

  .其容量大约为 ___(8)___

  A.670MB    B.1.46GB

  C.4.7GB    D.25GB

9.  通用的应用软件可以分为若干类型,例如文字处理软件、信息检索软件、媒体播放软

    件等。在下列软件中,不属于文字处理软件的是___(9)___

    A.WPS

    B.Adobe Acrobat 

    C.Word

    D.Access

10.下列有关Windows XP操作系统的叙述中,错误的是___(10)___

    A.Windows XP分为多种版本.例如家庭版、专业版

    B.Windows xP采用并发多任务方式支持多个任务的执行

    C.Windows XP一般采用按时间片轮转的策略调度处理器来执行每个任务

    D.虚拟存储器由主板上的RAMROM及显示卡的显存联合组成,它与硬盘无关

11.在下列有关算法的叙述中.错误的是___(11)___

    A.算法的设计一般采用由细到粗、由具体到抽象的方法

    B.算法设计方法有多种,例如枚举法、迭代法、递归法等等

    C.算法的表示可以有多种形式,例如文字说明、流程图表示、伪代码等

    D.一个问题的解决往往可以有多种不同的算法

12.下列有关Microsoft Office 2000(及其后续版本)的叙述中.错误的是___(12)___

    A.WordExcelPowerPoint创建的文档,均可以设置打开文件的密码

    B.Word文档中,可以插入声音和视频对象

    C.ExceI工作簿可以包含的工作表数量、工作表的行数与列数均没有限制,用户可以

    根据需要无限制地增加

    D.PowerPoint创建的演示文稿,用户可以直接将其保存为HTML文件(即网页)

13.在下列有关调制解调技术、多路复用技术的叙述中.错误的是___(13)___

    A.调制与解调技术中使用的"载波"信号,通常是低频正弦波信号

    B.调制技术可以分为幅度调制、频率调制和相位调制

    C.多路复用技术的作用主要是提高传输线路的利用率,降低通信成本

    D.多路复用技术可以分为时分复用、频分复用等类型

14.目前IPv4协议只有大约36亿个地址.很快就会分配完毕。新的IPv6协议把IP地址

    的长度扩展到___(14)___,几乎可以不受限制地提供IP地址。

    A.32    B.64

    C.128   D.256

15.下列与IP地址相关的叙述中.错误的是___(15)___   

    A.IP地址由三个部分组成,从左到右分别代表类型号、网络号和主机号

    B.因特网上的每台在线主机都必须有IP地址

    C.通过ADSL上网时,用户主机的IP地址通常是由因特网服务提供者动态分配的

    D.网络中的路由器不需要设置IP地址

16。通常所说的TCP/IP协议.是指由100多个协议组成的协议系列(包含下列几个协议)

    在下列协议中。实现文件传输服务主要依赖 ___(16)___   

    A.NNTP协议

    B.FTP协议

    C.Telnet协议

    D.SMTP协议

17.目前有线电视(CATV)系统已经广泛采用数字技术传输电视节目。下列是有关数字有

    线电视的相关叙述.其中错误的是___(17)___   

    A.数字有线电视采用光纤同轴电缆混合网.其主干线部分采用光纤连接到"小区"

    B.数字有线电视网络依赖于时分多路复用技术

    C.借助数字有线电视网络接入因特网.需要专用的Cable MODEM或互动式机顶盒

    D.借助数字有线电视网络接入因特网的多个终端用户共享连接段线路的带宽

18.下列有关文本与文本处理的叙述中,错误的是___(18)___   

    A.文本信息在计算机中存储时,汉字均为双字节编码,非汉字字符均为单字节编码

    B.文本输入可以是键盘输入,也可以是联机手写输入、语音输入等

    C.DOC文档、HTML网页、PDF文档均为丰富格式文本,但它们的格式标记方式

    不同

    D.文本中的字符可以使用不同的字体,不同字体的同一个汉字,其机内码相同

19.在未压缩的情况下.存储一幅分辨率为1024×102424位彩色数字图像需要的存储

  空间大约为 ___(19)___

  A.24KB    B.3MB

  C.8MB    D.24MB

20.文件扩展名通常用于标识文件的类型。下列4个文件扩展名中,属于数字波形声音文

    件的是___(20)___

    A.   .WAV

    B.   .MIDI

    C.   .AVI

    D.   .MPG

 

    第二部分     C语言程序设计

一、选择题(用答题卡答题.答案依次填在2130答题号内.10)

21.以下有关C语言函数的描述中,错误的是___(21)___

    A.一个完整的C程序可以有多个函数,其中必须有且只能有一个名为main的函数

    B.当一个C程序包含多个函数时,先定义的函数先执行

    C.函数可以嵌套调用

    D.函数不可以嵌套定义

22.以下程序段在编译时不会报错的是___(22)___ 

    A.#define double 2       B.#define a 2

    void main()                void main()

    {double a=0;}             {int a=0; }

 

    C.#define a 2           D.#define a 2

      void main()             int x=a;

      {a++;  }               void main()

                              {x++;}

23.已有声明"int x=0,y=2;",则执行语句"y=--x||++y;",变量y的值为___(23)___

    A.0    B.1    C.2   D.3

24.已有预处理命令"#include <math.h>"和声明"int a=4,b;".以下语句中语法正确的是___(24)___ 

    A.if(a%2=1) b=a;    B.if(sqrt(a)%2)b=a;    C.if(a==1)b=a; D.if(a==1)b=*a;

25.以下函数中能正确实现n! (n<13)计算的是___(25)___   

    A.long fact(long n)              B.long fact(long n)

      {                                {if(n<=1) return 1;

        return n*fact(n-1);              else return n*fact(n);

      }                                }

    C.long fact(1ong n)              D.long fact(long n)

      { static long s,i;               {long s=l.i;

        for(i=1;i<=n;i++)  s=s*i;          for(i=1;i<=n;i++)s=s*i;

        return s;                       return s

      }                                }

26.以下叙述中正确的是___(26)___   

  A.char s1[11]="C Language"; 等价于char s[11];s="C Language";

  B.char s[11]="C Language";等价于char s[11];s[11]="C Language";

  C.char *s="C Language";  等价于char *s;s="C Language";

  D.char *s="C Language";  等价于char *s;*s="C Language";

27.以下叙述中错误的是___(27)___   

  A.函数外声明的变量是全局变量

  B.函数内声明的变量是局部变量

  C.局部变量的生存期总是与程序运行的时间相同

  D.形式参数的生存期与所在函数被调用执行的时间相同

28.已有声明"int a[3][3]={1,2,3,4,5},*p1=a[0],(*p2)[3]=a;",以下选项中不能输出5的语句是

   ___(28)___

  A.printf("%d",a[1][1]);    B.printf("%d",p2[0][1]);

  C.printf("%d",p1[4]);      D.printf("%d",p2[1][1]);

29.已有如下定义和声明:

  struct data{int a;char b;float c;} s={1,2,3};

  char m;

  以下语句中正确的是___(29)___

  A.s=5;    B.s={4,5,6};    C.s.a=5;  D.m=s;

30.若要求数据文件myf.dat被程序打开后.文件中原有的数据均被删除,程序写入此文件的数据可以在不关闭文件的情况下被再次读出,则调用fopen函数时的形式为"fopen("myf.dat"," ___(30)___");"

    A.w    B.w+    C.a+  D.r

二、填空题(将答案填写在答题纸的相应答题号内.每个答案只占一行,30)

  基本概念

1.已有声明"int a,b;"ab的值均大于0,表达式"a%b+a/b*b==a"的值为___(1)___

2.已有声明"double x=3.5;".表达式"(int)x+x"值的类型为___(2)___

3.已有定义"#define M(a,b,c)a*b-c".执行语句"printf("%d",M(2+3,2+3,4));"时的输出为__

  _(3)___

4.表示"x取值在(1, )范围内时y取值1,否则y取值-1"所使用的C表达式为"y=___(4)___?1:-1"

5.已有声明"int a;char s[80]="123456";",执行语句"strcpy(s+4,"123456");a=strlen(s);"后变量a

  的值是___(5)___

  阅读程序

6.以下程序运行时输出到屏幕的结果是___(6)___

    #include<stdio.h>

    void  main()

    {  int a=011;

       printf("%d",a);

    }

7.以下程序运行时输出到屏幕的结果中第一行是___(7)___,第二行是___(8)___

    #include<stdio.h>

    int fun(int x)

    {static int y=1,z=0;

     y*=x;

     z+=y;

     return z;

    }

 

   void main()

   {int x;

    for(x=1;x<3;x++)

      printf("%d\n",fun(x));

   }

8.以下程序运行时输出到屏幕的结果中第一行是___(9)___.第二行是___(10)___

    #include<stdio.h>

    int f(int *a)

    {  int b;

       printf("%d\n",b=*a);

       a++;

       return b+*a;

    }

    void main()

    {  int a[3]={2,3,4};

       a[0]=f(&a[0]);

       printf("%d\n",a[0]);

    }

9.以下程序运行时输出到屏幕的结果中第一行是___(11)___,第二行是___(12)___

    #include <stdio.h>

    void main()

    {int a[100]={0},b[]={2,4,5,3,6,5,-1},x,i=0;

     while(b[i]>-1)

     {x=b[i];

      a[x]++;

      i++;

    }

    for(x=0,i=0;i<100;i++)

     while(a[i])

     {x++;

      (x%3==0)?printf("%4d\n",i):printf("%4d",i);

      a[i]--;  

     }

    }

10.以下程序运行时输出到屏幕的结果是___(13)___

    #include<stdio.h>

    #include<string.h>

    void main()

    {char a[]="Internet",b[]="Extranet";

     int k,n;

     n=strlen(a)<strlen(b)?strlen(a):strlen(b);

     for(k=0;k<n;k++)

       if(a[k]==b[k])

          printf("%c",a[k]);

    }

11.以下程序运行时输出到屏幕的结果中第一行是___(14)___,第二行是___(15)___   

    #include<stdio.h>

    void fun1(int *x,int n)

    {int  i,t;

     for(i=0;i<n/2;i++)

     {  t=x[i];x[i]=x[n-1-i];x[n-1-i]=t;  }

    }

    void fun2(int *x,int n)

    {int t;

     if(n==1) return;

     t=x[0];x[0]=x[n-1];x[n-1]=t;

     fun2(x+1,n-2);

    }

    void main()

    {int i,a[5]={1,2,3,4,5};

     fun1(a,5);

     for(i=0;i<5;i++)

       printf("%d",a[i]);

    printf("\n");

    fun2(a,5);

    for(i=0;i<5;i++)

      printf("%d",a[i]);

    }

12.以下程序运行时输出到屏幕的结果中第一行是___(16)___,第四行是___(17)___

第六行是___(18)___

  #include<stdio.h>

  void fun(int a[3][3],int c1,int c2)

  { int i,t;

    for(i=0;i<3;i++)

    {t=a[c1][i];

     a[c1][i]=a[c2][i];

     a[c2][i]=t;

    }

  }

  void main()

  {int i,j,k;

   int a[3][3]={2,3,4,1,3,2,1,2,3};

   for(k=0;k<3;k++)

   {for(j=0;j<3;j++)

       printf("%3d",a[k][j]);

    printf("\n");

   }

   for(i=0;i<3;i++)

   { k=i;

     for(j=i+1;j<3;j++)

       if(a[j][0]<a[k][0])k=j;

       else if(a[j][0]==a[k][0]&&a[j][1]<a[k][1]) k=j;

     if(i!=k)fun(a,i,k);

    }

    for(k=0;k<3;k++)

    {  for(j=0;j<3;j++)

         printf("%3d",a[k][j]);

       printf("\n");

    }

  }

  完善程序

13.以下程序输出1001000范围内的回文素数。回文素数是指既是回文数同时也是素数的整数。例如.131既是回文数又是素数,因此131是回文素数。

    #include <stdio.h>

    #include <math.h>

    int prime_pal(int n)

    {  int i,k=___(19)___,m;

       for(i=2;i<=k;i++)    /*判断n是否素数*/

         if(___(20)___) return 0;

       k=n;m=0;    /*n的反序数放入m*/

       while(k>O)

       {m=m*10+k%10;

        k=___(21)___;

       }   

       if(m==n)return 1;

       return 0;

    }   

    void main()

    {int j,k=0;

     for(j=100;j<=999;j++)

     {if(___(22)___)

       {printf("%d\t",j);

        if(++k%5==0)printf("\n");

       }

     }

    }

14.以下程序中函数void strol(char xx[])的功能是:将双指向的字符数组内的字符串中所有单词倒排 (:第一个单词与最后一个单词交换,第二个单词与倒数第二个单词交换,其他单词依次类推。

    单词之间用空格或标点符号分隔).倒排后的单词之间用空格分隔;最后把已处理的字符串仍存储在xx指向的数组中。例如,若数组中原字符串为"I am a student".则输出应为"student a am I"

    #include<stdio.h>

    #include<ctype.h>

    #include<string.h>

    void strol(char xx[])

    {

     int i,j,k,n=0;

     char t[80];

     j=strlen(xx)-1; 

     t[0]='\0';

     while(j>0)

     {while(isalpha(xx[j])==0&&j>=0)j--;

      k= ___(23)___;

      while(isalpha(xx[j])&&j>=0)j--;

      for(i=j+1;i<=k;i++)

        t[n++]=___(24)___;

      t[n++]=' ';

     }

     t[n]='\0';

     strcpy(xx,___(25)___);

    }

    void main()

    {char s[80]="I am a student....";

     strol(___(26)___);

     puts(s);

    }

15.已知h1h2为两个单向链表的头指针,h1指向的链表不为空链表。add函数的功能是将h2指向

  的链表(简称h2链表)中全部结点插入到h1指向的链表(简称h1链表)中第n个结点(n>0)

  之后,如果h2链表为空链表,则函数直接返回h1链表首结点的地址。如果h1链表中不存在第n

  个结点,则将h2链表中全部结点添加到h1链表的末尾,函数返回h1链表首结点地址.

  链表结点采用如下形式的数据结构:

  struct node

  {  int data;

     struct node *next;

  };

  #include <stdio.h>

  struct node *add(struct node *h1,struct node *h2,int n)

  {struct node *p1=h1,*q=h2,*p2;

   int i=0;

   if(h2==___(27)___) return h1;

   p2=h1;

   while(p1&&i<n)

   {  p2=p1;

      p1=p1->next;

      ___(28)___;

   }

   if(i<n)

     p2->next=q;

   else

   {

    ___(29)___=q;

    while(q->next) q=q->next;

    q->next=___(30)___;

   }

  return h1;

}

参考答案

1.A     2.D   3.C   4.B   5.C  6.A  7.D  8.B  9.D  10.D

 

11.A  12.C  13.A   14.C   15.D  16.B   17.B  18.A   19.B  20.A

 

21.B  22.D  23.B  24.C  25.D  26.C 27.C  28.B 29.C  30.B

二、填空题

(1)1  (2)double  (3)7 (4)x>=1 && x<=pow(10,0.5)  (5)10

 

(6)9  (7)1  (8)3  (9)2  (10)5

(11)2  3  4  (12)5  5  6  (13)tnet

(14)54321 (15)12345  (16)2 3 4

(17)1 2 3 (18)2 3 4  (19)n-1

(20)n%i==0  (21)k/10  (22)prime_pal(j)

(23)j  (24)xx[i]  (25)t  (26)s

(27)NULL  (28)i=i+1  (29)p2->next  (30)p1