江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2011年秋季江苏省计算机二级C考试笔试真题

  绝密★ 启用前

2011年秋

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

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

二级试卷

试卷语种: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个比特可以表示8位二进制数

    C.集成电路芯片是微电子技术的结晶,是现代信息产业的基础

    D.Moore定律是指"单块集成电路的集成度平均每18-24个月翻一番"

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

    A.数字电子计算机诞生于20世纪40年代,个人计算机(微型计算机)产生子20世纪80年代初

    B.4代计算机的CPU主要采用中小规模集成电路,5代计算机采用超大规模集成电路

    C.计算机分类有多种方法,按其内部逻辑结构通常分为16位机、32位机或64位机等,目前使用的PC机大多是32位机或64位机

    D.巨型计算机一般采用大规模并行处理的体系结构,我国国防科技大学研制的"

    1,,巨型计算机,其性能可在全球巨型机排行榜中位居前10

4.  下列有关PC机微处理器的叙述中,错误的是___(4)___

    A.目前PC机所用的各种微处理器均由Intel公司设计和生产

    B.微处理器通常由单片集成电路制成

    C.一台高性能PC机中通常包含多个微处理器

    D.台式PC机与笔记本PC机采用的微处理器通常有所不同

5.  下列有关PC机主板与芯片组的叙述中,错误的是 ___(5)___

    A.台式PC机主板的物理尺寸已经标准化

    B.有些主板将声卡、网卡、显卡的功能均集成在其中

    C.芯片组是PC机各组成部分相互连接和通信的枢纽,它们与CPU芯片以及IO

    口同步发展

    D.PC机主板上可安装的内存条类型及内存最大容量与芯片组无关

6.  下列是PC机常用的四种外设接口,其中适用于连接硬盘和光驱的是___(6)___

    A.RS-232

    B.SATA

    C.IEEE-1394

    D.VGA

7.  下列有关显示器、显示卡、打印机的叙述中,错误的是___(7)___

    A.目前常见的"宽屏"LCD显示器,其屏幕的宽度与高度之比为4:3

    B.对于集成显卡来说,显卡的功能主要是由主板上的芯片组来实现

    C.无论是针式打印机,还是激光/喷墨打印机,均有黑白打印机与彩色打印机之分

    D.打印机的主要性能指标之一是打印速度,其单位为PPM

8.  下列有关光盘存储器的叙述中,错误的是 ___(8)___

    A.DVD光盘刻录机可以刻录的光盘有CD-RCD-RWDVD-RDVD-RW等类型

    B.组合光驱("康宝")组合了CD刻录机与DVD刻录机的功能

    C.蓝光光驱(BD)使用蓝色激光在光盘上读写信息

    D.光盘刻录机的读/写速度通常是不同的,一般来说读取信息的速度快于刻录的速度

9.  按照软件著作权益的处置方式,软件可以分为商品软件、共享软件、自由软件等类型•

    在下列相关叙述中,错误的是___(9)___

    A.商品软件需要用户付费才能得到其使用权

    B.共享软件是具有版权的软件,允许用户有条件的使用

    C.自由软件允许使用者随意拷贝、传播,允许修改其源代码但必须公开修改内容

    D.共享软件、自由软件均属于免费软件

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

    A.Windows XPWindows 7均分为32位版本和64位版本

    B.一般来说,能安装Windows 7PC机也能安装Windows XP

    C.无论是Windows XP还是Windows 7,其家庭版(基本版)均不支持多核处理器

    D.目前来看,WindowsUNIX更容易受到病毒的侵扰

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

    A.通俗地说,算法就是解决问题的方法和步骤

    B.算法总是在执行了有限步的操作后终止

    C.程序是算法的实现,程序与算法是一一对应的

    D.算法解决的往往是一类问题而不是一个特定的问题

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

    A.Word创建的文档,用户可以直接将其保存为HTML文件(即网页)

    B.Excel中用户可以直接打开一些数据库中的表文件(例如DBF文件)

    C.FrontPage"代码"视图中,用户可以直接对HTML网页进行编辑

    D.Access数据库中每个表可以有多个主键

13.下列是与通信传输介质相关的叙述,其中错误的是___(13)___

   A.目前家用的电话线属于五类双绞线

   B.目前入户的有线电视电缆属于宽带同轴电缆

   C.光纤是光导纤维的简称,光纤的纤芯是细石英玻璃丝

   D.微波是一种电磁波,它具有类似光波的特性,在空间主要是直线传播

14.因特网中的IP地址可以分为A类、B类、C类、D类等。在下列4IP地址中,

  C类地址的是___(14)___

  A.28.129.200.19

  B.88.129.200.19

  C.188.129.200.19

  D.222.129.200.19

15.在下列有关IP地址与域名的叙述中,错误的是___(15)___

    A.目前使用的IP协议主要是IPv4协议,IP地址长度为32

    B.因特网是多个网络互联而成的,不同网络中的主机可以具有相同的IP地址

    C.域名是IP地址的文字表述形式,但不是所有的IP地址均有相应的域名

    D.一个IP地址可以有多个对应的域名

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

    在下列协议中,发送电子邮件主要依赖___(16)___.

    A.HTTP协议

    B.FTP协议

    C.Telnet协议

    D.SMTP协议

17.下列有关采用ADSL技术接入因特网的叙述中,错误的是___(17)___

    A.计算机中需要安装(集成)以太网网卡

    B.需要使用专用的ADSL MODEM设备

    C.上行与下行传输速率相同,传输速率可达100Mbps

    D.可传送数据、音频、视频等信息

18.下列有关汉字字符集及其编码的叙述中,错误的是___(18)___

    A.GB2312是我国颁布的第一个汉字编码国家标准,该标准包含了6000多个汉字

    B.GB2312的所有字符在计算机内都采用2个字节来表示

    C.GBK收录了包括繁体字在内的20000多个汉字和符号,它向下兼容GB2312

    D.GB18030是我国最新颁布的汉字编码标准,它与GB2312GBK均不兼容

19.语音在数字化时常用的取样频率为8kHz、量化位数为8bits。若声道数为2,则每分钟

    的数字语音数据量在未压缩时大约为 ___(19)___

    A.64KB 

    B.128KB

    C.1MB

    D.2MB

 20.数字图像文件有多种文件类型,不同类型的文件各有其特点。在下列4种文件类型中,

    能够将多张图片保存在一个文件中且能产生动画效果的是___(20)___

    A.BMP

    B.JPG

    C.GIF

    D. PNG

第二部分  C语言程序设计

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

21.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是___(21)___

  A.#define P 3.14;       B.#define P(3.14)

  C.#define P=3.14;      D.#define P 3.14

22.下列四个选项中,属于C语言关键字的是___(22)___

  A.Float    B.single    C.double    D.real

23.已知某编译系统中signed int类型数据的长度是16,该类型数据的最大值是___(23)___

  A.32767    B.32768    C.127   D.65535

24.以下关于if语句和switch语句的叙述中错误的是___(24)___

    A.if语句和switch语句都可以实现算法的选择结构

    B.if语句和switch语句都能实现多路(两路以上)选择

    C.if语句可以嵌套使用

    D.switch语句不能嵌套使用

25.已有声明"char *s1="China",s2[10],*s3="Nanjing",*s4;",以下字符串赋值语句在执行时可能出

    现错误的是___(25)___

    A.strcpy(s3,s1);    B.strcpy(s4,s1);    C.strcpy(s2,s1);  D.strcpy(s2,s3);

26.已有声明"int x=0,*p=&x;",以下语句中有语法错误的是___(26)___

    A.printf("%d",*x);  B.printf("%d",&x);  C.printf("%d",*p);  D.printf("%d",x);

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

    A.在函数外可以声明变量

    B.变量声明的位置决定了该变量名的使用范围

    C.函数调用时在函数内声明的变量所得到的值将无法保存到该函数的下一次调用

    D.在函数外声明的变量,其值可以保存到该程序运行结束

28.已有声明"int t=1;",则执行"printf("%d",(t+5,t++));"时输出结果是___(28)___

    A.1    B.6    C.2    D.7

29.已有声明"static char *p="Apple";",则执行语句"puts(p+2);"时输出为___(29)___

    A.Apple    B.Cpple    C.pple   D.ple

30.以下选项均欲声明变量P,其中错误的是___(30)___

    A.typedef struct Person    B.struct Person

      { char name[20];           {char name[20];   

        int age;                 int age;

      }Per;                      };

       Per p;                  struct Person p;

    C.struct                  D.struct

      { char name[20];          {char name[20|;

        int age;                 int age;

      }Per;                     }p;

      Per p;

 

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

●基本概念(5)

1.C语言源程序中用十六进制表示整型常数必须以___(1)___开头。

2.如果一个循环结构的循环体至少要执行一遍,则最适合描述该循环结构的语句是___(2)___语句。

3.若要声明一个无符号整型变量x,则正确的声明形式是" ___(3)___ int x;"

4.已有声明"int n=12;double a;",则执行语句"a=n/=5;",a的值为___(4)___

5.若有数据类型定义如下:

    union A{float a1;float a2;};

    则表达式sizeof(union A)的值为___(5)___

阅读程序(13)

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

    #include<stdio.h>

    enum color{BLACK,YELLOW,BLUE=3,GREEN,WHITE};

    void main()

    {char *colorname[]={"Black","Yellow","Blue","Green","White"};

     enum color cl=GREEN,c2=BLUE;

     printf("%s",colorname[c1-c2]);

    }

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

    #include<stdio.h>

    void main()

    {int a=0,b=1,d=10;

    if(a)

     if(b)

      d=20;

     else

      d=30;

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

    }

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

    #include<stdio.h>  

    void fun(int a,int *b)

    {  a++;

       (*b)++;

    }

    void main()

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

     fun(a[0],&a[1]);

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

    }

 

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

    第三行是___(12)___

    #include<stdio.h>

    #include<math.h>

    void main()

    {int a[100]={0},i,j,k;

     for(i=1;i<100;i++)

       a[i]=i+1;

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

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

     { if(a[j]!=0)

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

           if(a[k]%a[j]==0)

             a[k]=0;

     }

     for(k=1,i=0;k<100;k++)

      if(a[k]!=0)

      {printf("%4d",a[k]);

       i++;

       if(i%3==0)printf("\n");

      }

    }

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

    #include<stdio.h>

    #include<math.h>

    int fun(int a,int b)

    {int n;

     while(a!=b)

     {n=abs(a-b);

      a=(a>b)?b:a;

      b=n;

     }  

     return a;

    }

    void main()

    {printf("%d\n%d\n",fun(9,15),fun(9,5)); }

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

    #include<stdio.h>

    int fun1(int p[ ],int n)

    {int i,s=0;

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

       s+=p[i];

     return s;

    }

    int fun2(int *s,int n)

    {if(n==1)

      return *s;

     else

       return (*s)+fun2(s+1,n-1);

    }

    void main()

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

       printf("%d\n%d",fun1(a,3),fun2(a,3));

    }

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

    #include<stdio.h>

    #include<string.h>

    int fun(char str[])

    {int i,j,len;

     len=strlen(str);

     for(i=0,j=0;str[i];i++)

      if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))

       str[j++]=str[i];

     str[j]='\0';

     return len-j;

    }

    void main()

    {char ss[80]="It23is!";

     int n;

     n=fun(ss);

     printf("%d\n%s\n",n,ss);

    }

完善程序(12)

13.以下程序中judge函数的功能是判断x指向的int类型数组(长度为n)中各元素之间的逻辑关系。

  n个元素的值均相等则输出"all elements are same".n个元素的值无序则输出"no order";

  n个元素的值按升序排列则输出"ascend".n个元素的值按降序排列则输出"descend',

  #include<stdio.h>

  void judge(___(19)___,int n)

  {int f,i=0;

   while(i<n-1&&x[i]==x[i+1])

    i++;

   if(i==___(20)___)

   {printf("\n all elements are same");

    return;

   }

   if(x[i]<x[i+1])f=1;

   else f=0;

   for(;i<n-1;i++)

     if(f&&x[i]>x[i+1]||!f&&___(21)___)

     {printf("\n no order");

      return;

     }

   if(___(22)___) printf("\n ascend");

   else printf("\n descend");

  }

void main()

{int a[5]={1,2,3,4,5},b[5]={5,4,3,2,1},c[5]={1,4,2,3,5),d[5]={2,2,2,2,2};

  judge(a,5);

  judge(b,5);

  judge(c,5);

  judge(d,5);

}

14.下列程序的功能是判断一个n阶对称方阵是否双对称方阵,4阶对称方阵是指a =a (1<=i<=4,1<=j<=4),

4阶双对称矩阵是指一个4阶对称矩阵的第1列与第4列对换,2列与第3列对换后仍然是对称

矩阵,函数issym(int m[][N],int n)的功能是判断二维数组m中存放的一个n阶方阵是否为

对称矩阵,如果是则函数返回值1,否则返回值0,函数exchange(int a[][N],int n)的功能是

将一个二维数组a中存放的一个n阶矩阵做横向翻转,:将矩阵的第1列与第n列对换,

将第2列与第n-1列对换,...,直到n/2列为止

例如:对称矩阵

1      -1    2      -3

-1     0     3      2

2      3     0      -1

-3     2     -1      1

是双对称矩阵 

#include<stdio.h>

#define N 10

void exchange(int a[][N],int n)

{

  int i,j,t;

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

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

    {t=a[i][j];

     ___(23)___=a[i][n-j-1];

    a[i][n-j-1]=t;

    }

}

int issym(int m[][N],int n)

{

  int i,j;

  for(i=0;i<n-1;i++)

    for(j=i;j<n;j++)

        if(___(24)___)    /*对称矩阵判断*/

         return 0;

     ___(25)___ ;

}

    void main()

    {  int a[N][N];

     int n=4,i,j,r1,r2;

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

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

         scanf("%d",&a[i][j]);

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

    {for(j=0;j<n.j++)

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

    printf("\n");

    }

    r1=issym(a,n);

    exchange( ___(26)___);

    r2=issym(a,n);

    if((r1+r2==2))

      printf("matrix is double symmetric\n");

    else

      printf("matrix is not double symmetric\n");

    }

15.函数deletelist的功能:在head指向的单向链表中查找是否出现多个x值相同的结点。如果发现存

在这样的结点,则保留第一个结点,删除其他重复出现的结点。

  typedef struct point    /*链表结点数据结构定义*/

  {int x;

    struct point*next;

  } ___(27)___    ;

  POT *deletelist(POT *head)

  {

    POT *p,*p1,*p2;

    p=___(28)___;

    while(p->next!=NULL)

    {p1=p;

     p2=p->next;

     while(p2!=NULL)

     {

      if(p2->x==p->x)

      {p1->next=___(29)___;

       free(p2);

       p2=p1->next;

      }

      else

      {p1=p2;

       p2=p2->next;

      }

     }

     p=___(30)___;

   }

    return head;

}

参考答案:

一、选择题:

(1)B  (2)B (3)B  (4)A  (5)D  (6)B(7)A  (8)B (9)D  (10)C  (11)C(12)D  (13)A  (14)D  (15)B(16)D  (17)C  (18)D  (19)C (20)C(21).D  (22).C  (23).A  (24).D  (25).B(26).A  (27).C  (28).A  (29).D  (30).C

二、填空题

(1)0x  (2)do while  (3)unsigned  (4)2.0 (5)4(6)Yellow  (7)10  (8)1  (9)2  (10)0 2 3

(11)2 3 5 (12)7  11  13  (13)3 (14)1  (15)6(16)6  (17)3  (18)Itis  (19)int *x(20)n-1 (21)x[i]<x[i+1] (22)f==1(23)a[i][j]  (24)m[i][j]!=m[j][i](25)return  1  (26)a,n(27)POT  (28)head  (29)p2->next(30)p->next