江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
2013秋江蘇省計算機等級考試C語言筆試真題

   絕密★ 啟用前

2013年秋

江蘇省高等學校非計算機專業學生

計算機基礎知識和應用能力等級考試

二級試卷

試卷語種:C語言

 

  明:

1.本試卷包括計算機基礎知識部分和程序設計部分,考試時間共12 0分鐘;

2.本試卷滿分為60,分選擇題和填空題,試卷不分AB類型;

3.計算機基礎知識部分全部是選擇題(20),程序設計部分分為選擇題(1 0

  )和填空題(30)兩種;

4.選擇題用答題卡答題。每一項有ABCD四個可供選擇的答案,請選

  擇其中一個你認為正確的答案,HB鉛筆涂寫在答題卡的相應答題號內。

  每選對一項得1,不選或選錯不得分;

5.填空題用答題紙答題。請將答案用藍、黑色鋼筆或圓珠筆填寫在答題紙的

  相應答題號內,每個答案只占一行,不得換行。每填對一個答案得1,

  不填或填錯不得分;

6.請認真填寫并仔細核對答題卡和答題紙上的學校名稱、準考證號和姓名是

  否填寫正確。

7.考試結束時將試卷、答題卡和答題紙放在桌上,不得帶走。待監考人員收

  畢清點后,方可離場。

 

 

第一部分  計算機基礎知識

一、選擇題(用答題卡答題,答案依次填在120題號內)

1.在下列有關信息、信息技術、信息化、信息產業的相關敘述中,錯誤的是___l___   

    A.信息、物質與能量是客觀世界的三大構成要素,沒有信息則任何事物都沒有意義

    B.現代信息技術的主要特征之一是以計算機及其軟件為核心

    C.信息化的概念起源于上世紀90年代,我國的信息化建設起步于本世紀初

    D.信息產業主要包括信息設備制造業、信息服務業、信息開發業等

2.對二進制數0101分別進行算術加和邏輯加運算,其結果用二進制形式表示分別為    ___2___   

    A01 10

    B10 01

    C01 01

    D10 10

3.芯片組是PC機各組成部分相互連接和通信的樞紐。下列關于芯片組的描述中,錯誤的是___3___

    A.芯片組是主板上的重要部件,它直接固定在主板上,通常不可更換

    B.芯片組與CPU的類型必須相配

    C.芯片組提供了CPU的時鐘信號

    D.所有外部設備的控制功能都集成在芯片組中

4.關于PC機主板上的CMOS芯片,下面說法中正確的是___4___   

    A. CMOS芯片需要一個電池給它供電,否則其中的數據在主機斷電后會丟失

    BCMOS芯片用于存儲加電自檢程序

    CCMOS芯片用于存儲BIOS,是易失性的

    D. CMOS芯片用于存儲計算機系統的配置參數,它是只讀存儲器

5USB是一種可以連接多個設備的總線式串行接口,目前在PC機及各種數碼設備中普遍使用。在下列相關敘述中錯誤的是 ___5___   

    A. USB接口有USB l.0USB l.1USB 2.0USB 3.0之分

    B.通過USB接口給外部I/O設備提供電源時,電源為+5V

    C.目前廣泛使用的USB 2.0的最高數據傳輸速率可達每秒數十兆字節

    D.借助于“USB集線器”可以擴展PC機的USB接口數目,使得一個USB接口理論上能連接1024個設備

6.顯示器是計算機必不可少的一種圖文輸出設備,其作用是將數字信號轉換為光信號,使文字與圖形在屏幕上顯示出來。下列相關敘述中錯誤的是    ___6___   

    A.目前PC機使用的顯示器主要有兩類,CRT顯示器和LED顯示器

    B.顯示器屏幕大小以顯示屏的對角線長度來度量

    C.PC機的顯示控制器過去大多數做成插卡的形式,為了降低成本,現在顯示控制器已經越來越多地集成在主板芯片組或CPU芯片中

    D.目前顯卡主要使用AGP接口或PCI-E x16接口,前者性能優于后者

7.下列有關PC機常見外部存儲器的敘述中,錯誤的是    ___7___

    A.移動硬盤通常采用微型硬盤加上特制的配套硬盤盒構成,采用USB接口與主機相連接

    B.目前U盤可以模擬光驅和硬盤啟動操作系統

    C.存儲卡是用閃存做成的一種固態存儲器,具有與U盤相同的多種優點,目前所有PC機都配置了讀卡器,以便對存儲卡進行讀寫操作

    D. SSD是基于半導體存儲器芯片的一種外存儲設備,可被用在便攜式計算機中代替常規的硬盤

8.下列關于計算機軟件的敘述中,錯誤的是    ___8___   

    A.軟件的含義比程序更宏觀、更物化一些。一般情況下,軟件往往指的是設計比較成熟、功能比較完善、具有某種使用價值的程序

    B.軟件產品一般是指軟件開發廠商交付給用戶用于特定用途的一整套程序、數據及相關的文檔(包括安裝和使用手冊等)

    C.免費軟件一般是指用戶可共享的軟件,允許隨意拷貝、修改其源代碼,允許自由傳播

    D. MS Office軟件包中包含多個軟件產品,安裝時用戶可以進行有選擇的安裝

9.下列關于Windows操作系統處理器管理的說法中,錯誤的是    ___9___   

    A.處理器管理的主要目的是提高CPU的使用效率

    B.多任務處理是將CPU時間劃分成時間片,輪流為多個任務服務

    C.并行處理系統可以讓多個CPU同時工作,提高計算機系統的性能

    D.多任務處理要求計算機必須使用多核CPU

10.下列關于程序設計語言的說法中,正確的是    ___10___   

    A.高級語言程序的執行速度比低級語言程序快

    B.高級語言就是人們日常使用的自然語言

    C.高級語言與CPU的邏輯結構無關

    D.無需經過翻譯或轉換,計算機就可以直接執行用高級語言編寫的程序

11.下列關于目前最常用的無線通信信道的說法中,錯誤的是    ___11___   

    A.無線電波可用于傳輸模擬信號,也可以用于傳輸數字信號

    B.利用微波可將信息集中向某個方向進行定向傳輸,以防止他人截取信號

    C.短波通信適用于環球通信

    D.激光能在長距離內保持聚焦并能穿透物體,因而可以傳輸很遠的距離

12.目前我國和歐洲廣泛使用的GSM(全球通)手機屬于    ___12___    移動通信。

    A.第一代

    B.第二代

    C.第三代

    D.第四代

13.以下選項中,只有    ___13___    可用作某臺主機的lP地址。

    A62.26.1.256

    B202.119.24.5

    C78.0.0.0

    D223.268.129.1

14.因特網中主機的符號名被稱為它的域名。下列關于域名的敘述中,錯誤的是    ___14___

  A.域名是IP地址的一種符號表示

  B.上網的每臺計算機都有一個IP地址,所以也有各自的域名

  C.把域名翻譯成IP地址的軟件稱為域名系統DNS

  D.運行域名系統DNS的主機叫做域名服務器,每個校園網都有一個域名服務器

15.目前采用無線方式接入因特網的技術主要有無線局域網(WLAN)接入、GPRS移動電話網接入和3G移動電話網接入等。下列相關敘述中錯誤的是    ___15___   

  A.采用無線局域網接入方式,可以在任何地方接入

  B.采用3G移動電話上網比GPRS快得多

  C.目前大多數智能手機支持WLAN接入技術

  D.目前采用移動電話上網的費用還比較高

16.下列關于網絡信息安全措施的敘述中,正確的是    ___16___   

  A.帶有數字簽名的信息是未泄密的信息

  B.防火墻可以防止外界接觸到內部網絡,從而保證內部網絡的絕對安全

  C.數據加密的目的是在網絡通信被竊聽的情況下仍然保證數據的安全

  D.使用最好的殺毒軟件可以殺掉所有的病毒

17.下列有關字符編碼標準的敘述中,正確的是    ___17___   

  A. UCS/Unicode編碼的目標是實現全球不同語言文字的統一編碼

  BASCIIGB2312GBK是我國為適應漢字信息處理需要而制定的一系列漢字編碼標準

  C. UCS/Unicode編碼與GB2312編碼保持向下兼容

  D. GB18030標準就是Unicode編碼標準,它是我國為了與國際標準UCS接軌而發布的一種漢字編碼標準

18.與計算機能合成圖像一樣,計算機也能合成(生成)聲音。計算機合成聲音分為合成語音和合成音樂兩類,其中合成音樂的文件擴展名為    ___18___   

  AWAV

  BMID

  CMP3

  DWMA

19.彩色圖像所使用的顏色描述方法稱為顏色模型。顯示器使用的顏色模型為RGB三基色模型,彩色打印機所使用的顏色模型大多為    ___19___   

  AYUV

  BHSB

  CCMYK

  DRGB

20.數字視頻信息的數據量相當大,對存儲、處理和傳輸都是極大的負擔,為此必須對其進行壓縮。目前數字有線電視和衛星電視所傳輸的數字視頻采用的壓縮編碼標準大多是    ___20___   

  AMPEG-1

  BMPEG-2

  CMPEG-4

  DMPEG-7

 

 

第二部分  C語言程序設計

 

一、選擇題(用答題卡答題,答案依次填在21- 30答題號內,10)

21.在C語言源程序中,不能用于表示整型常數的數制是 ___21___   

    A.十六進制    B.八進制

    C.十進制      D.二進制

22.以下選項中不符合C語言標識符命名規則的是  ___22___ 

    Aprintf    B_00

    C&a        DFOR

 23.以下選項中,可作為C語言合法表達式的是  ___23___

    A3.0%2       B3=2=1=0

    C.{3,2,1,0}      D.(3,2,1,0)

24.若有宏定義"#define S(x,y) x/y",則執行語句"printf("%d",S(6+3,2+2));"后的輸出是___24___ 

    A9      B2

    C9.5    D2.25

25.表達式"3<2 || -1 && !0"的值是___25___

    A2    B  1

    C0    D-1

26.已知有聲明"char s[10];",若要將鍵盤輸入的連續5個字母字符存儲到s數組中,則以下選項

  中錯誤的輸入語句是  ___26___ 

  A.gets(&s[0]);   B. scanf("%s",s+1);

  C.  gets(s);     Dscanf("%s",s[1]);

27.已知有聲明"int a[10]={1,2,3,4,5,6,7,8},*p=&a[5];",*(p-3)的值是  ___27___ 

    A6    B3

    C2    D. 1

28.以下數組聲明中錯誤的是  ___28___

  A.int num[2][4]={{1,2},{3,4),{5,6}};  B.int num[][3]={{1,2},{3,4},{5,6}};

  C.int  num[]= {1,2,3,4,5,6};          D.int num[][4]={1,2,3,4,5,6};

29.已知有聲明"typedef char STRING; STRING s[10];",sizeof(s)的值是 ___29___

    A20    B10

    C5     D4

30.已知有聲明"struct date{ int y,m;}a={2013,5},b={0};",以下選項中合法的語句是___30___ 

    Aif (a>b) b=a;     B  a++;

    Cb=a;            Db=(a.y,a.m);

二、填空題(將答案填寫在答題紙的相應答題號內,每個答案只占一行,30)

  基本概念(5)

1.可以表示數學式 C語言表達式是 ___(1)___

2.已知yfloat類型的變量,執行語句"(int)y;",y的類型是  ___(2)___   

3.已知有聲明"int a[5]={5,4,3,2,1},i=3;",執行語句"a[i++]++;printf("%d",a[i]);",屏幕輸出為  ___(3)___ 

4.已知有聲明"int  a[3][4];",若要求正確執行語句"p=a[0];",p的聲明應是  ___(4)___ 

5.若要用fopen函數以文本方式打開或新建一個可讀可寫文件,要求:

(1)若指定的文件存在則打開它,

  否則新建一個文件;(2)使寫入的數據追加在該文件的末尾,并且在不關閉文件的情況下能讀出原有數據及寫入的新數據;則在fopen"文件打開方式"的正確形式應是  ___(5)___ 

  閱讀程序(13)

6.以下程序運行時,輸出到屏幕的結果是 ___(6)___   

    #include <stdio.h>

    int main()

    {

     int a=6,b=15,t=a;

     while (t%b! =0)

       t+=a;

    printf("%d",t);

    return 0;

    }

7以下程序運行時,輸出到屏幕的結果是 ___(7)___ 

    #include <stdio.h>

    void fun(char *a,char *b)

    {

     while(*a=='*')a++;

     while((*b=*a)!='\0')

     {b++;

      a++;

     }

    }

   int main()

   {

    char *s="*****a*b**",t[80];

    fun(s,t);

    puts(t);

    return 0;

    }

8.以下程序運行時,輸出到屏幕的結果是  ___(8)___ 

    #include <stdio.h>

    void  fun (int n)

    {

      int t;

      putchar (n%10+'0');

      t=n/100;

      if(t!=0)   fun (t);

    }

   int main()

   {

    int m=12345;

    fun (m);

    printf("\n");

    return 0;

    }

9.以下程序運行時,輸出到屏幕的結果是__(9)___

    #include <stdio.h>

    #include <string.h>

    void f(char s[],char t[])

    {

    int i,m=strlen(t),k;

    for(i=0;s[i]!='\0';i++)

      if(s[i]>='a'&& s[i]<='z')

      {

        k=t[i%m]-'0';

       s[i]=(s[i]-'a'+k)%26+'a';

      }

    }

   int main()

   {

    char s1[10]="Be2013";

    f(s1, "123");

    puts(s1);

    return 0;

   }

10.以下程序運行時,輸出到屏幕的結果中第一行是___(10)___,第二行是___(11)___ 

    #include<stdio.h>

    void fun(int *t)

    {

     static int i=0;

     do

        t[i]+=t[i+1];

     while(++i<3);

    }

    int main()

    {

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

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

      fun(a);

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

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

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

     return 0;

    }

11.以下程序運行時,輸出到屏幕的結果中第一行是___(12)___  ,第三行是  ___(13)___ 

    #include <stdio.h>

    #define N 3

    int main()

    {

      int a[N][N],b[N*Nl={1,1},i,j;

      for(i=2;i<N*N;i++)

         b[i]=b[i-1]+b[i-2];

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

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

          a[i][j] =b[i*N+j];

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

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

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

         printf("\n");

      }

      return 0;

    }

12.以下程序運行時,輸出到屏幕的結果中第一行是___(14)___  ,第二行是___(15)___ 

    #include <stdio.h>

    void fun(int a[],int n)

    {

      int i,j,t;

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

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

           if(a[i]<a[j])

           {  t=a[i];

              a[i]=a[j];

              a[j]=t;

            }

    }

    int main()

    {

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

      fun(aa+2,3);

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

     {

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

       if((i+1)%3==0)

         printf ("\n");

      }

    return 0;

   }

13.以下程序運行時,輸出到屏幕的結果中第一行是__(16)___,第三行是___(17)___,第四行是___(18)___ 

    #include<stdio.h>

    struct n

    {

      int x;

      char c;

    };

    void fun(struct n  *b)

   {

    b++->x=20;

    b->c='y';

   }

  int main()

  {

    struct n a[2]={10,'x'};

    fun (a);

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

    return 0;

  }

  完善程序(12)

14.以下程序的功能是:

(1)模擬scanf函數調用時格式字符串中轉換說明"%le"的轉換功能,即接收鍵盤輸入的一個以小數形式或指數形式表示的實數字符串,將該字符串轉換成double類型數據;

  (2)以小數形式輸出該double類型數據。例如,若輸入"123.4",則輸出123. 400000;若輸入

    "123. 4e5",則輸出12340000.000000

    #include <stdio.h>

    double  toDouble (char  *s)

    {

    int e=0;

    double  t=0,  idx=1.0;

    char *p, sign='+';

    for(p=s; *p &&(*p=='  '|| *p=='\t');p++);  /*跳過前面的空白符*/

    if(*p=='+' || *p=='-') sign=*p++;    /*符號處理*/

    while(*p>='0' && *p<='9')    /提取整數部分母/

    {

      t=t*10+(*p-'0');

      p++;

    }

    if(*p=='')

    {

      ___(19)___;    /*越過小數點,繼續處理小數部分*/

     idx/=10;

     while(*p>='0' && *p<='9')

     {

       t+=(*p-'0')*idx;

       p++;

       idx/=10;

      }

    }

    if (sign=='-')  ___(20)___    ;

    if(*p !='e' && *p !='E')    /*若無指數部分,則結束轉換*/

       return t;

    p++;

    sign='+';    /*提取指數部分*/

    if(*p=='+' || *p=='-')

       sign=*p++;

    while(*p>='0' && *p<='9')

    {

       e= ___(21)___ ;

       p++;

    }

    if(sign=='-')idx=0.1;

    else     idx=10;

    vrhile (e>0)

    {

      t*=idx;

      ___(22)___  ;

    }

    return t

}

int main()

{

    char ss[80];

    gets (ss);

    printf("%f\n",  toDouble (ss));

    return 0;

 }

15.以下程序中函數int  check (int  *a,int *b,int len)的功能是:(1)a指向的包含len個元素的整型數組中所有相鄰元素值之差的絕對值依次存放在b指向的一維數組中;(2)檢查b數組中所有元素的值是否組成一個公差大于0的等差數列,若是則函數返回1,否則函數返回0。例如:當a指向數組各元素的值是{-3,-2,1,6,13),b指向數組各元素的值{1,3,5,7}組成一個公差為2的等差數列,因此函數返回1

  #include <stdioh>

  #include <mathh>

  #define M 5

  #define N 10

  /*tongj函數統計a指向二維數組每行中存放的連續非0整數個數并依次保存到n指向的數組中*/

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

 {

     int i,j;

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

     {

       j=0;

       while(a[i][j]!=0  && j<N)

       j++;

       ______(23)_____  ;

     }

  }

  int check(int *a,  int *b, int len)

  {

    int i,g;

    if(len<=3) return 0;

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

      b[i]=0;

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

    { g=a[i+1]-a[i];

      if(g<0)____(24)___;

      b[i]=g;

    )

    g=b[1]-b[0];

    if(g<=0) return 0;

    for (i=2; i<len-1;i++)

       if(___(25)___!=g) return 0;

    return 1;

  }

 

  int main()

  {

    int a[M][N]= {{-3,-2,1,6,13},{1,2,3,4},{2,5,4,6},

                  {1,2,5,7,11,6,13,7},{5,2,4}},b[N];

    int n[M],i,j,x;

    tongj(a,n);

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

    {x=check( ___(26)___    );

     if (x==1)

        printf("\nYes ");

    else

       printf("\nNo  ")

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

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

    }

    printf("\n");

    return 0;

  }

16.已知一個單向鏈表結點的數據結構定義如下:

    struct node

    {

    char data;

    struct node *next;

    };

函數struct node *cre (char *s)的功能是:根據s指向的字符串建立一個結點類型為struct node頭指針為h的單向鏈表,使h鏈表中各結點的數據域分別存儲s指向字符串中所有大寫字母的編碼,函數返回h鏈表首結點的地址.例如,s指向的字符串為"3Aa26Bx5Y9",h指向的鏈表如下圖所示。

 

#include  <stdio. h>

#include  <stdlib. h>

struct node

{

    char data;

    struct node *next;

};

struct node *cre(char *s)

{

    struct node *p,*p1,*h;

    if (___(27)___) return NULL;

    h=p1=p=(struct node *)malloc(sizeof(struct node)) ;

    p->data=*s ;

    s++;

    while (*s)

    {

       if(*s>='A' && *s<='Z')

       {

           p= (struct  node *) malloc (sizeof (struct  node)) ;

           p->data=*s ;

           ___(28)____ = p;

           p1=p ;

       }

       s++;

    }

    ___ (29)___   =NULL;

    ___(30)___;

}

void print(struct node *h)

 {

    struct node *p=h;

    while (p!=NULL)

    {   printf ("%3c", p->data) ;

        p=p->next ;

    }

    printf ("\n") ;

}

int main()

 {

    struct node *head=NULL;

    char *p=”3Aa26Bx5Y9";

    head=cre (p) ;        print (head) ;

    return 0;

}

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

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

 

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

(1) pow( x,1.0/3)/(a+b) pow( x,1/3.0)/(a+b) pow( x,1.0/3.0)/(a+b)

(2) float     (3)1   (4)int *p;  (5)"a+"  (6)30   (7)a*b**

(8) 531      (9) Bg2013   (10) 3579  (11) 5   (12)1 1 2   (13)13 21 34

(14) 125   (15) 436   (16) 20  (17) 0  (18) y  (19)p++++p  

 (20) t =- t  (21) e * 10 +*p - '0'   (22) e-- --e  (23) n[i] =j

 (24) g =- g g = abs( g) (25) b[i] - b[i-1]   (26)a[i], b, n[i]   (27)*s=='\0' *s==0  !*s

  (28) p1 -> next     (29) p1 -> next p -> next   (30) return h

彩票30选5开奖结果