亚洲国产福利在线一二三观看_精品国产伦一区二区三区欲臀_国产a∨视频精品视频护士_精品八戒人妻少妇av

江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
2010年3月全國等考C語言等考試題與答案

20103月全國計算機等級考試二級筆試試卷

C語言程序設計

(考試時間90分鐘,滿分100分)

一、選擇題((110)、(2140)每題2分,(1120)每題1分,共70分)

下列各題A)、B)、C)D)四個選項中,只有一個選項是正確的。請將正確選項填涂在答題卡相應位置上,答在試卷上不得分。

 

(1)下列敘述中正確的是
A)
對長度為n的有序鏈表進行查找,最壞情況下需要的比較次數為n
B)
對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為
(n/2)
C)
對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為
(log2n)
D)
對長度為n的有序鏈表進行對分查找,最壞情況下需要的比較次數為(nlog2n)

   

(2)算法的時間復雜度是指
A)
算法的執(zhí)行時間                        B)算法所處理的數據量
C)
算法程序中的語司或指令條數            D)算法在執(zhí)行過程中所需要的基本運算次數

   

(3)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是
A)
編輯軟件          B)操作系統          C)教務管理系統      D)瀏覽器

   

(4)軟件(程序)調試的任務是
A)
診斷和改正程序中的錯誤                B)盡可能多地發(fā)現程序中的錯誤
C)
發(fā)現并改正程序中的所有錯誤            D)確定程序中錯誤的性質

   

(5)數據流程圖(DFD圖)是
A)
軟件概要設計的工具                    B)軟件詳細設計的工具
C)
結構化方法的需求分析工具              D)面向對象方法的需求分析工具

   

(6)軟件生命周期可分為定義階段,開發(fā)階段和維護階段。詳細設計屬于
A)
定義階段                              B)開發(fā)階段

C)維護階段                              D)上述三個階段

   

(7)數據庫管理系統中負責數據模式定義的語言是
A)
數據定義語言                          B)數據管理語言

C)數據操縱語言                          D)數據控制語言

 

(8)在學生管理的關系數據庫中,存取一個學生信息的數據單位是
A)
文件              B)數據庫            C)字段              D)記錄

   

(9)數據庫設計中,用E-R圖來描述信息結構但不涉及信息在計算機中的表示,它屬于數據庫設計的
A)
需求分析階段                          B)邏輯設計階段

C)概念設計階段                         D)物理設計階段

   

(10)有兩個關系RT如下:

 

R

 

 

 

T

 

A

B

C

 

A

B

C

a

1

2

 

c

3

2

b

2

2

 

d

3

2

c

3

2

 

 

 

 

d

3

2

 

 

 

 

    則由關系R得到關系T的操作是
A)
選擇              B)投影              C)                D)

   

(11)以下敘述正確的是
A)C語言
程序是由過程和函數組成的
B)C
語言函數可以嵌套調用,例如:fun(fun(x))
C)C
語言函數不可以單獨編譯

D)C
語言中除了main函數,其他函數不可作為單獨文件形式存在

   

(12)以下關于C語言的敘述中正確的是
A)C
語言中的注釋不可以夾在變量名或關鍵字的中間
B)C
語言中的變量可以在使用之前的任何位置進行定義
C)
C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致
D)C
語言的數值常量中夾帶空格不影響常量值的正確表示

   

(13)以下C語言用戶標識符中,不合法的是
A)_1                B)AaBc              C)a_b               D)a-b

   

(14)若有定義:double a=22;int i=0,k=18;,則不符合C語言規(guī)定的賦值語句是
A)a=a++,i++;       B)i=(a+k)<=(i+k);  C)i=a%11;           D)i=!a;

   

(15)有以下程序
    #include  <stdio.h>
    main()
    { char a,b,c,d;
      scanf("%c%c",&a,&b);
      c=getchar();    d=getchar();
      printf("%c%c%c%c\n",a,b,c,d);
    }
當執(zhí)行程序時,按下列方式輸入數據(從第1列開始,<CR>代表回車,注意:回車也是一個字符)
   12<CR>
   34<CR>
則輸出結果是
A)1234              B)12                C)12                D)12
                      3                   34

   

(16)以下關于C語言數據類型使用的敘述中錯誤的是
A)
若要準確無誤差的表示自然數,應使用整數類型
B)
若要保存帶有多位小數的數據,應使用雙精度類型
C)
若要處理如人員信息等含有不同類型的相關數據,應自定義結構體類型
D)
若只處理兩種邏輯值,應使用邏輯類型

   

(17)a是數值類型,則邏輯表達式(a==1)||(a!=1)的值是
A)1                B)0                  C)2                D)不知道a的值,不能確定

   

(18)以下選項中與if(a==1)a=b; else a++;語句功能不同的switch語句是
A)switch(a)                             B)switch(a==1)

{ case 1:a=b;break;                     { case 0:a=b;break;
    default : a++;                          case 1:a++;
  }                                        }
C)switch(a)                             D)switch(a==1)
  { default:a++;break;                    { case 1:a=b;break;
    case 1:a=b;                             case 0:a++;
  }                                        }

 

(19)有如下嵌套的if語句
    if(a<b)
      if(a<c) k=a;
      else  k=c;
    else
      if(b<c) k=b;
      else  k=c;
   
以下選項中與上述if語句等價的語句是
A)k=(a<b)?a:b;k=(b<c)?b:c;              B)k=(a<b)?((b<c)? a:b):((b>c)?b:c);
C)k=(a<b)?((a<c)? a:c):((b<c)?b:c);     D)k=(a<b)?a:b;k=(a<c)? a:c;

   

(20)有以下程序
    #include  <stdio.h>
    main()
    {  int i,j,m=1;
       for(i=1;i<3;i++)
       {  for(j=3;j>0;j--)
          {  if(i*j>3) break;
              m*=i*j;
           }
        }
        printf("m=%d\n",m);
     }
 
程序運行后的輸出結果是
A)m=6               B)m=2               C)m=4               D)m=5

   

(21)有以下程序
    #include  <stdio.h>
    main()
    {  int a=1, b=2;
    for( ;a<8;a++) {b+=a; a+=2;}
    printf("%d,%d\n",a,b);
    }
   
程序運行后的輸出結果是
A)9,18              B)8,11              C)7,11          D)10,14

   

(22)有以下程序,其中k的初值為八進制數
    #include  <stdio.h>
    main()
    {  int k=011;
       printf("%d\n",k++);
    }
   
程序運行后的輸出結果是
A)12                B)11                C)10                D)9

   

(23)下列語句組中,正確的是
A)char *s;s="Olympic";                  B)char s[7];s="Olympic";
C)char *s;s={"Olympic"};                D)char s[7];s={"Olympic"};

   

(24)以下關于return語句的敘述中正確的是
A)
一個自定義函數中必須有一條return語句
B)
一個自定義函數中可以根據不同情況設置多條return語句
C)
定義成void類型的函數中可以有帶返回值的return語句
D)
沒有return語句的自定義函數在執(zhí)行結束時不能返回到調用處

   

(25)下列選項中,能正確定義數組的語句是
A)int num[0..2008];                     B)int num[];
C)int N=2008;                           D)#define N 2008
  int num[N];                             int num[N];

   

(26)有以下程序
   #include  <stdio.h>
   void fun(char *c,int d)
   {  *c=*c+1;d=d+1;
      printf("%c,%c,",*c,d);

   }
   main()
   {  char b='a',a='A';
      fun(&b,a);  printf("%c,%c\n",b,a);
   }
  
程序運行后的輸出結果是
A)b,B,b,A           B)b,B,B,A           C)a,B,B,a          D)a,B,a,B

   

(27)若有定義int  (*pt)[3];,則下列說法正確的是
A)
定義了基類型為int的三個指針變量
B)
定義了基類型為int的具有三個元素的指針數組pt
C)
定義了一個名為*pt、具有三個元素的整型數組

D)
定義了一個名為pt的指針變量,它可以指向每行有三個整數元素的二維數組

   

(28)設有定義double a[10],*s=a;,以下能夠代表數組元素a[3]的是
A)(*s)[3]           B)*(s+3)            C)*s[3]             D)*s+3

   

(29)有以下程序
    #include  <stdio.h>
    main()
    {  int a[5]={1,2,3,4,5}, b[5]={0,2,1,3,0},i,s=0;
       for(i=0;i<5;i++) s=s+a[b[i]];
       printf("%d\n",s);
    }
   
程序運行后的輸出結果是
A)6                 B)10                C)11                D)15

   

(30)有以下程序
    #include  <stdio.h>
    main()
    {  int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
       for(i=0;i<3;i++)
         for(j=i;j<=i;j++) t+=b[i][b[j][i]];
       printf("%d\n",t);
    }
   
程序運行后的輸出結果是
A)1                 B)3                 C)4                 D)9

   

(31)若有以下定義和語句
    char  s1[10]="abcd!",  *s2="\n123\\";
    printf("%d  %d\n", strlen(s1),strlen(s2));
   
則輸出結果是
A)5  5              B)10  5             C)10  7             D)5  8

   

 

(32)有以下程序
    #include  <stdio.h>
    #define N 8
    void fun(int *x, int i)
    { *x=*(x+i); }
    main()
    {  int a[N]={1,2,3,4,5,6,7,8},i;
       fun(a,2);
       for(i=0; i<N/2; i++)
       {  printf("%d",a[i]);}
       printf("\n");
    }
   
程序運行后的輸出結果是
A)1313              B)2234              C)3234              D)1234

   

(33)有以下程序
    #include  <stdio.h>
    int f(int t[], int n);
    main()
    {  int a[4]={1,2,3,4},s;
       s=f(a,4);  printf("%d\n",s);
    }
    int  f(int t[],int n)
    {  if(n>0) return  t[n-1]+f(t,n-1);
       else  return  0;
    }
   
程序運行后的輸出結果是
A)4                 B)1O                C)14                D)6

   

(34)有以下程序
    #include  <stdio.h>
    int fun()
    {  static int x=1;
       x*=2;  return  x;
    }
    main()
    {  int i,s=1;
       for(i=1;i<=2;i++) s=fun();
       printf("%d\n",s);
    }
   
程序運行后的輸出結果是
A)O                 B)1                 C)4                 D)8

   

(35)有以下程序
    #include  <stdio.h>
    #define SUB(a) (a)-(a)
    main()
    {  int a=2,b=3,c=5,d;
       d=SUB(a+b)*c;
       printf("%d\n",d);
    }
   
程序運行后的輸出結果是
A)0                 B)-12               C)-20               D)10

   

(36)設有定義:
    struct complex
    {  int real,unreal; } data1={1,8},data2;
   
則以下賦值語句中錯誤的是

A)data2=data1;                          B)data2=(2,6);
C)data2.real=data1.real;                D)data2.real=data1.unreal;

   

(37)有以下程序
    #include  <stdio.h>
    #include  <string.h>
    struct  A
    {  int a; char b[10]; double c; };
    void f(struct A t);
    main()
    {  struct A a={1001,"ZhangDa",1098.0};
       f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
    }
    void f(struct A t)
    { t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;}
   
程序運行后的輸出結果是
A)1001,ZhangDa,1098.0                   B)1002,ChangRong,1202.0
C)1001,ChangRong,1098.O                 D)1002,ZhangDa,1202.0

    

(38)有以下定義和語句
    struct workers
    {  int num;char name[20];char c;
       struct
       { int day; int month; int year; } s;
    };
    struct workers w,*pw;
    pw=&w;
   
能給wyear成員賦1980的語句是
A)*pw.year=198O;    B)w.year=1980;      C)pw->year=1980;    D)w.s.year=1980;

   

(39)有以下程序
    #include  <stdio.h>
    main()
    {  int a=2,b=2,c=2;
       printf("%d\n",a/b&c);
    }
   
程序運行后的輸出結果是
A)O                 B)1                 C)2                 D)3

   

(40)有以下程序
    #include  <stdio.h>
    main()
    {  FILE *fp;char str[10];
       fp=fopen("myfile.dat","w");
       fputs("abc",fp);fclose(fp);
       fp=fopen("myfile.data","a++");
       fprintf(fp,"%d",28);
       rewind(fp);
       fscanf(fp,"%s",str); puts(str);
       fclose(fp);
    }
   
程序運行后的輸出結果是
A)abc              B) 28c              C) abc28            D)
因類型不一致而出錯

 

二、填空題(每空2分,共30)

 請將每空的正確答案寫在答題卡1】至【15】序號的橫線上,答在試卷上不得分。

 

(1)一個隊列的初始狀態(tài)為空。現將元素A,B,C,D,E,F,5,4,3,2,1依次入隊,然后再依次退隊,則元素退隊的順序為   1   。

   

(2)設某循環(huán)隊列的容量為50,如果頭指針front=45(指向隊頭元素的前一位置),尾指針rear=10(指向隊尾元素),則該循環(huán)隊列中共有   2   個元素。

   

A

B

C

D

E

F

G

H

(3)設二叉樹如下:

 

 

 

 

 

 

 

 

    對該二叉樹進行后序遍歷的結果為   3   。

   

(4)軟件是   4  、數據和文檔的集合。

    

(5)有一個學生選課的關系,其中學生的關系模式為:學生(學號,姓名,班級,年齡),課程的關系模式為:課程(課號,課程名,學時),其中兩個關系模式的鍵分別是學號和課號,則關系模式選課可定義為:選課(學號,   5   ,成績)

   

(6)xint型變量,請寫出一個關系表達式   6   ,用以判斷x同時為37的倍數時,關系表達式的值為真。

   

(7)有以下程序
    #include  <stdio.h>
    main()
    {  int a=1,b=2,c=3,d=0;
       if (a==1)
          if (b!=2)
             if (c==3)     d=1;
             else          d=2;
          else if(c!=3)    d=3;
               else        d=4;
       else                d=5;
       printf("%d\n",d);
    }
   
程序運行后的輸出結果是   7   。

   

(8)有以下程序
    #include  <stdio.h>
    main()
    {  int m,n;
       scanf("%d%d",&m,&n);
       while(m!=n)
       {  while(m>n) m=m-n;
          while(m<n) n=n-m;
       }
       printf("%d\n",m);
    }
   
程序運行后,當輸入14  63 <回車> 時,輸出結果是   8   。

   

(9)有以下程序
    #include  <stdio.h>
    main()
    {  int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
       for(i=0;i<3;i++)
          for(j=i;j<3;j++) printf("%d",a[i][j]);
       printf("\n");
    }
   
程序運行后的輸出結果是   9   。

   

(10)有以下程序
    #include  <stdio.h>
    main()
    {  int a[]={1,2,3,4,5,6},*k[3],i=0;
       while(i<3)
       {  k[i]=&a[2*i];
          printf("%d",*k[i]);
          i++;  }
    }
   
程序運行后的輸出結果是   10   。

   

(11)有以下程序
    #include  <stdio.h>
    main()
    {  int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
       int b[3]={0},i;
       for(i=0;i<3;i++) b[i]=a[i][2]+a[2][i];
       for(i=0;i<3;i++) printf("%d",b[i]);
       printf("\n");
    }
   
程序運行后的輸出結果是   11   。

   

(12)有以下程序
    #include  <stdio.h>
    #include  <string.h>
    void fun(char *str)
    {  char temp;int n,i;
       n=strlen(str);
       temp=str[n-1];
       for(i=n-1;i>0;i--) str[i]=str[i-1];
       str[0]=temp;
    }
    main()
    {  char s[50];
       scanf("%s",s);  fun(s);  printf("%s\n",s); }
   
程序運行后輸入:abcdef<回車>,則輸出結果是   12  

   

(13)以下程序的功能是:將值為三位正整數的變量x中的數值按照個位、十位、百位的順序拆分并輸出。請?zhí)羁铡?SPAN lang=EN-US>
    #include  <stdio.h>
    main()
    {  int x=256;
       printf("%d-%d-%d\n",  
13  ,x/10%10,x/100);

    }

   

(14)以下程序用以刪除字符串所有的空格,請?zhí)羁铡?SPAN lang=EN-US>
    #include  <stdio.h>
    main()
    {  char s[100]={"Our teacher teach C language!"}; int i,j;
       for(i=j=0;s[i]!=
'\0';i++)
       if(s[i]!=' ') {s[j]=s[i];j++;}
       s[j]=  
14;
       printf("%s\n",s);

    }

   

(15)以下程序的功能是:借助指針變量找出數組元素中的最大值及其元素的下標值。請?zhí)羁铡?SPAN lang=EN-US>
    #include  <stdio.h>
    main()
    {  int a[10], *p, *s;
       for(p=a;p-a<10;p++) scanf("%d",p);
       for(p=a,s=a;p-a<10;p++) if(*p>*s)  s=  
15   ;
       printf("index=%d\n",s-a);

    }


 

20103全國計算機等級考試二級C語言程序設計筆試標準答案

一、選擇題

   1.ADBAC   6.BADCA  11.BADCC  16.DABCA  21.DDABD  26.ADBCC  31.ACBCC  36.BADAC

 

二、填空

1.ABCDEF4321        2.15                3.EDBGHFCA          4.程序              5.課號

6.x%3==0 && x%7==0  7.4                 8.7                 9.123569            10.135

11.101418           12.fabcde           13.x%10             14.'\0'             15.p