江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2009年春季江苏省二级c语言试题与答案

江苏省高校计算机等级考试2009年春季考试试题

第二部分   C程序设计

21.以下定义和声明中,语法均有错误的是____(21)_________

int j(int x){}int f(int f){}  int 2x=1;    struet for{int x;};

A.②③    B.③④    C.①④    D.①②③④

22.设有定义和声明如下:

    #define d  2   

    int x=5;float Y =3.83;char c='d';

以下表达式中有语法错误的是_(22)______

Ax++    By++    Cc++    Dd++

23.以下选项中,不能表示函数 功能的表达式是___(23)______

 As=(X>0)?1:(X<0)?-1:0    Bs=X<0?-1:(X>0?1:0)

 Cs=X<=0?-1:(X==0?0:1)    Ds=x>0?1:x==0?0:-1

24.以下语句中有语法错误的是____(24)______    

    Aprintf("%d",0e);    Bprintf("%f",0e2);

    Cprintf("%d",Ox2);   Dprintf("%s","0x2");

25.以下函数定义中正确的是___(25)_________

    Adouble fun(double x,double y){}

    Bdouble fun(double x;double Y){}

    Cdouble fun(double x,double Y);{}

    Ddouble fun(double X,Y){}

26.若需要通过调用f函数得到一个数的平方值,以下f函数定义中不能实现该功能的

  _____(26)______

    Avoid f(double *a){*a=(*a)*(*a);}

    Bvoid f(double a,double *b){*b=a*a;}

    Cvoid f(double a,double b){b=a*a;}

    Ddouble f(double a){return a*a;}

27.设有声明"int P[10]={1,2},i=0;",以下语句中与"P[i]=P[i+1],i++;"等价的

____(27)_______

    AP[i]=P[i++];    BP[++i]=P[i];

    CP[++i]=P[i+1];  Di++,P[i-1]=P[i];

28.已知有声明"char a[]="It is mine",*p="It is mine";",下列叙述中错误的是28 

    Astrcpy(a,"yes")strcpy(p,"yes")都是正确的

    Ba="yes"p="yes"都是正确的

    C*a等于*p

    Dsizeof(a)不等于sizeof(p)

29.已知有声明"int a[3][3]={0},*p1=a[1],(*p2)[3]=a;",以下表达式中与

"a[1][1]=1"不等价的表达式是29

    A*(p1+1)=1    Bp1[1][1]=1

C*(*(p2+1)+1)=1    Dp2[1][1]=1

  30.设有结构定义及变量声明如下:

    struct product

    {char code[5];

    float price;

    }y[4]={"100",100}"

  以下表达式中错误的是____(30)_____

  A.(*y).code[0]='2';    B.y[0].code[0]='2';

  C.y->price=10;         D.(*y)->price=10;

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

  ●基本概念

  1.在一个C语言源程序中,必不可少的是(1) 

  2.若有声明"int x;"sizeof(x)的值为2,则当x值为( 2 )"x+1>x"为假。

  3.若有声明"float y=3.14619;int x;",则计算表达式"x=y*100+0.5,Y=x/100.0"y

的值是(3) 

  4.执行以下程序段中的语句"k=M*M+1"k的值是(4)

    #define N 2

    #define M N+1

    k=M*M+1

  ●阅读程序

  5.以下程序运行时输出结果是(5) 

    #include<stdio.h>

    void main()

    {double x[3]={1.1,2.2,3.3},Y;

    FILE *fp=fopen("d:\\a.out","wb+");

    fwrite(x,sizeof(double),3,fp)"

    fseek(fp,2L*sizeof(double),SEEK_SET);

    fread(&y,sizeof(double),1,fp)"

    printf("%.1f",y);

    fclose(fp)"

    }

  6.以下程序运行时输出结果是(6)

    #include<stdio.h>

    void main()

    {  int k=5,n=0;

    while(k>0)

    {  switch(k)

       {  case 1:

          case 3:n+=1;k--;break"

          default:n=0;k--;

          case 2:

          case 4: n+=2;k--;break;

       }

    }

    printf("%3d",n);

    }

   }

7.以下程序运行时输出结果是(7) 

    #include<stdio.h>

    void change(int x,int Y,int *z)

    {  int t;

       t=x;x=y;y=*z;*z=t;

    }

    void main()

    {  int x=18,y=27,z=63;

       change(x,y,&z);

       printf("x=%d,y=%d,z=%d\n",x,y,z);

    }

8.以下程序运行时输出结果是(8) 

    #include<stdio.h>

    int f(int x,int y)

    {retum x+y;  }   

    void main()

    {double a=5.5,b=2.5;

    printf("%d",f(a,b));

    }

9.以下程序运行时输出结果中第-行是  (9) ,第三行是(10) 

    #include<stdio.h>

    define N 5

    void main()

    {  static char a[N][N];

       int i,j,t,start=0,end=N-1;

       char str[]="123",ch;

       for(t=0;t<=N/2;t++)

       {  ch=str[t];

          for(i=j-start;i<end;i++)a[i][j]=ch;

          for(j=start;j<end;j++)a[i][j]=ch;

          for(i=end;i>start;i--)a[i][j]=ch;

          for(j=end;j>start;j--)a[i][j]=ch;

          if(start==end) a[start][end]=ch;

          start++,end--;

       }

       for(i=O;i<N;i++)   

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

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

          printf("\n");

        }

    }

10.以下程序运行时输出结果中第一行是(11),第二行是(12)

    #include<stdio.h>

    void fun(int x,int P[],int *n)

    {  int i,j=O;

       for(i=1;i<=x/2;i++)

         if(x%i==0)p[j++]=i;

       *n=j

    }

    void main()

    {int x,a[10],n,i;

    fun(27,a,&n);

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

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

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

    }

11.以下程序运行时输出结果是(11) 

    #include<stdio.h>

    #include<ctype.h>

    int count(char s[])

    {  int i=0;

       if(s[i]=='\0')  return 0;

       while(isalpha(s[i]))i++;

       while(!isalpha(s[i])&&s[i]!='\O')i++;

       return 1+count(&s[i]);

    }

    void main()

    {char line[]="one world,one dream.";

     printf("%d",count(line));

    }    .

12.以下程序运行时输出结果中第一行是  (14 ,第二行是(15)

    #include<stdio.h>

    int fun(char *a,char *b)

    {int m=0,n=0

    while(*(a+m)!='\0')m++;   

    while(b[n])

    { *(a+m)=b[n];m++;n++;    }

      *(a+m)='\0';

    return m;

    }

    void main()

    {char s1[20]="yes",s2[5]="no";

    printf("%d\n",fun(s1,s2));

    puts(s1);

    }

13.以下程序运行时输出结果中第-行是  (16)  ,第二行是  (17) ,第三行是( 18 )

    #include<stdio.h>

    typedef struct{int x;int y;}S;

    void fun(S pp[],int n)

    {int i,j,k;S t;

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

      {  k=i;

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

          if((pp[j].x<pp[k].x)||(pp[j].x==pp[k].x&&pp[j].y<pp[k].y))

           k=j;

          if(k!=i)

           {t=pp[i];pp[i]=pp[k];pp[k]=t;}

      }

    }

    void main()

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

     int i,n=5;

    fun(a,n);

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

      printf("%d,%d\n",a[i].x,a[i].y);

    }    .

  完善程序

  14?以下程序求一组整数的最大公约数。试完善程序以达到要求的功能。

    #include<stdio.h>

    int gcd(int a,int b)    i

    {int r;

      while(_____(19)_______)

      {r=a%b;a=b;(_____20_____);}

       return a;

    }

    void main()

    {int x,i,a[6]={12,56,48,32,16,24};

    x= (___21_____)    ;

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

    x=gcd(___(22)_____,a[i]);

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

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

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

    printf("%d)=;d\n",a[5],x);

    }

    15.以下程序完成两个长正整数的加法运算并输出计算结果。函数add模拟手工加法运

算的过程,ab指向的数组中存储的两个以字符串形式表示的n位正整数相加,并将运算

结果以字符串形式保存到c指向的数组中。main函数中plp2数组分别存放被加数字符串

和加数字符串,p3数组存放运算结果字符串。若p1中的字符串为"1000000001"p2中的字

符串为"9000000009",调用add函数后p3得到的是以字符串表示的这两个整数相加的结果

"10000000010"。试完善程序以达到要求的功能。

    #include "stdio.h"

    #include "string.h"

    void add(char a[],char b[],char c[],__(23)____)

    {int i,k;

    c[n]='\0';k=0;

    for(i=n-1;i>=0;i--)

    {c[i]=(a[i]-'O')+(b[i]-'0')+k;

     k=______(24)______;

     c[i]=c[i]%10+'0';

    }

    if(k)

    {for(i=n+1;i>O;i--)

      c[i]=___(25)____;

     c[i]=k+'0';

    }

    }

    void main()

    {char p1[80]="1000000001",pz[80]="9000000009",p3[80];

    int i,x=strlen(p1),y=strlen(p2);

    if(x<y)

    { for(i=x;i>=0;i--)

      {p1[i+y-x]=p1[i];p1[i]='0';}

       _____(26)______;

    }

    if(x>y)

     for(i=y;i>=0;i--)

     {p2[i+x-y]=p2[i];p2[i]='0';}

    add(p1,p2,p3,x);

    puts(p3);

    }

    16.以下程序创建-个链表并实现数据统计功能。函数WORD *create(char a[][20],

  int n)创建-个包含n个结点的单向链表,结点数据来自a指向的数组中存储的n个单词

  (字符串)。函数void count(WORD *h)统计h指向的单向链表中不同单词各自出现的次数,

  将统计结果保存到局部数组c中并输出。程序运行时输出结果为"red:1  green:2  blue:3"

  试完善程序以达到要求的功能。

    #include "stdio.h"

    #include "stdlib.h"

    #include "string.h"

    typedef struct w

    {char word[20];

    struct w *next

    }WORD;

    WORD *create(char a[][20],int n)

    {WORD *p1,*p2,*h=0;int i;   

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

    {p1=(WORD *)malloc(sizeof(WORD));

    strcpy(___(27)___,a[i]);

    if(h==O)

      h=p2=p1

    else

    {p2->next=p1;p2=pl;}

    }

    p2->next=_____(28)____;

    return h;

    }

    void count(WORD *h)

    {  struct

       {char word[20];

        int num;

       }c[6]={0};

    int m=0,i;

    while(h)

    {if(m==O)

      {strcpy(c[0].word,h->word);

       c[0].num=1;m++;   

      }

    else

    {for(i=O;i<m;i++)

       if(strcmp(c[i].word,h->word)==0)

        {  ______(29)_____  ;

           break;

        }

       if(i>=m)

       {strcpy(c[m].word,h->word);

        c[m++].num=1;

       }

    }

    ____(30)_____;

    }

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

      printf("%s%d",c[i].word,c[i].num);

    }

    void main()

    {char words[6][20]={"red","green","blue","blue","green","blue"};

    WORD *head=0

    head=create(words,6);

    count(head);

    }

 

    第一部分计算机基础知识

1.  在下列有关现代信息技术的一些叙述中,正确的是    1   

  A.集成电路是20世纪90年代初出现的,它的出现直接导致了微型计算机的诞生

  B.集成电路的集成度越来越高,目前集成度最高的已包含几百个电子元件

  C.目前所有数字通信均不再需要使用调制解调技术和载波技术

  D.光纤主要用于数字通信,它采用波分多路复用技术以增大信道容量‘    .

2.  最大的10位无符号二进制整数转换成八进制数是    2    .

  A.1023    B.1777

  C.1000    D.1024

3.  在下列有关目前PCCPU的叙述中,错误的是    3  

    A.CPU芯片主要是由Intel公司和AMD公司提供的

    B."双核"是指PC机主板上含有两个独立的CPU芯片

    C.Pentium 4微处理器的指令系统由数百条指令组成

    D.Pentium 4微处理器中包含一定容量的Cache存储器

4.  在下列有关当前PC机主板和内存的叙述中,正确的是    4   

    A.主板上的BIOS芯片是一种只读存储器,其内容不可在线改写

    B.绝大多数主板上仅有一个内存插座,因此PC机只能安装一根内存条

    C.内存条上的存储器芯片属于SRAM(静态随机存取存储器)

    D.目前内存的存取时间大多在几个到十几个ns(纳秒)之间

5.  在下列有关PC机辅助存储器的叙述中,正确的是    5   

    A.硬盘的内部传输速率远远大于外部传输速率

    B.对于光盘刻录机来说,其刻录信息的速度一般小于读取信息的速度

    C.使用USB 2.0接口的移动硬盘,其数据传输速率大约为每秒数百兆字节

    D.CD-ROM的数据传输速率一般比USB 2.0还快

6.  在下列PCI/O接口中,数据传输速率最快的是    6   

    A.USB 2.0          B.IEEE-1394

    C.IrDA (红外)      D.SATA

 7.  计算机软件可以分为商品软件、共享软件和自由软件等类型。在下列相关叙述中,错误的是    7   

    A.通常用户需要付费才能得到商品软件的使用权,但这类软件的升级总是免费的

    B.共享软件通常是一种"买前免费试用"的具有版权的软件

    C.自由软件的原则是用户可共享,并允许拷贝和自由传播

    D.软件许可证是一种法律合同,它确定了用户对软件的使用权限

8.  人们通常将计算机软件划分为系统软件和应用软件。下列软件中,不属于应用软件类型的是    8  

    A.AutoCAD     B.MSN    C.Oracle      D.Windows Media Player

9.  在下列有关Windows 98/2000/XP操作系统的叙述中,错误的是    9   

    A.系统采用并发多任务方式支持多个任务在计算机中同时执行

    B.系统总是将一定的硬盘空间作为虚拟内存来使用

    C.文件()名的长度可达200多个字符

    D.硬盘、光盘、优盘等均使用FAT文件系统

10. 在下列有关算法和数据结构的叙述中,错误的是    10   

    A.算法通常是用于解决某一个特定问题,且算法必须有输入和输出

    B.算法的表示可以有多种形式,流程图和伪代码都是常用的算法表示方法

    C.常用的数据结构有集合结构、线性结构、树形结构和网状结构等

    D.数组的存储结构是一种顺序结构

11•因特网的IP地址由三个部分构成,从左到右分别代表    11    

    A.网络号、主机号和类型号

    B.类型号、网络号和主机号

    C.网络号、类型号和主机号

    D.主机号、网络号和类型号

12•在下列有关ADSL技术及利用该技术接入因特网的叙述中,错误的是    12   

    A.从理论上看,其上传速度与下载速度相同

    B.一条电话线上可同时接听/拨打电话和进行数据传输

    C.利用ADSL技术进行数据传输时,有效传输距离可达几公里

    D.目前利用ADSL技术上网的计算机一般需要使用以太网网卡

13.人们往往会用"我用的是10M宽带上网"来说明白己计算机连网的性能,这里的"10M"

  指的是数据通信中的    13    指标。

  A.最高数据传输速率

  B.平均数据传输速率

  C.每分钟数据流量

  D.每分钟IP数据包的数目

14•计算机局域网按拓扑结构进行分类,可分为环型、星型和    14    型等。

  A.电路交换

  B.以太  

  C.总线

  D.对等

15.网络信息安全主要涉及数据的完整性、可用性、机密性等问题。保证数据的完整性就是 15  

  A.保证传送的数据信息不被第三方监视和窃取

  B.保证发送方的真实身份

  C.保证传送的数据信息不被篡改

  D.保证发送方不能抵赖曾经发送过某数据信息

16.某计算机系统中,西文使用标准ASCII码、汉字采用GB2312编码。设有一段纯文本,其机内码为CB F5 DO B4 50 43 CA C7 D6 B8,则在这段文本中含有:  16   

    A.2个汉字和1个西文字符

    B.4个汉字和2个西文字符   

    C.8个汉字和2个西文字符

    D.4个汉字和1个西文字符

17.以下关于汉字编码标准的叙述中,错误的是   17   

    A.GB 2312标准中所有汉字的机内码均用双字节表示      

    B.我国台湾地区使用的汉字编码标准BIG 5收录的是繁体汉字

    C.GB 18030汉字编码标准收录的汉字在GB 2312标准中一定能找到

    D.GB 18030汉字编码标准既能与UCS(Unicode)接轨,又能保护已有中文信息资源

18.若波形声音未进行压缩时的码率为64kb/s,已知取样频率为8kHz,量化位数为8,那么它的声道数是    18   

  A.1    B.2   C.4 D.8 

19.从信息处理的深度来区分信息系统,可分为业务处理系统、信息检索系统和信息分析系统等。在下列几种信息系统中,不属于业务处理系统的是    19   

    A.DSS  B.CAI   C.CAM   D.OA

 20.在下列有关信息系统开发、管理及其数据库设计的叙述中,错误的是    20   

    A.常用的信息系统开发方法可分为结构化生命周期方法、原型法、面向对象方法和CASE方法等

    B.在系统分析中常常使用结构化分析方法,并用数据流程图和数据字典来表达数据和处理过程的关系

    C.系统设计分为概念结构设计、逻辑结构设计和物理结构设计,通常用E-R模型作为描述逻辑结构的工具

    D.从信息系统开发过程来看,程序编码、编译、连接、测试等属于系统实施阶段的工作

1.D  2.B  3.B  4.D  5.B  6.D    7.A  8.C  9.D  10.A  11.B  12.A  13.A  14.C  15.C  16.B  17.C  18.A  19.A  20.C

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

二:填空

(1)main函数定义  (2)32767  (3)3.15    (4)  6    (5)3.3   (6)2   3    5   6  (7)x=18, y=27 , z=18     (8)7

(9)11111   (10)12321    (11)1    3    9   (12)3    (13)4     (14)5   (15)yesno    (16)1,2    (17)2,3   (18)2,4     (19)b或b!=0

(20)b=r     (21)a[0]   (22)x          (23)int n    (24)c[i]/10        (25)c[i-1]     (26)x=y          (27)p1->word

(28)0或NULL     (29)c[i].min++               (30)h=h->next