1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            2007年4月全國二級C語言計算機等級考試

            20074月全國計算機等級考試二級筆試試卷
            C
            語言程序設計
            (
            考試時間120分鐘,滿分100)

            一、選擇題(1)—(10)每小題2分,(11)—(50)每題1分,共60)下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上,答在試卷上不得分。

              (1)下列敘述中正確的是(B)
              A)
            算法的效率只與問題的規模有關,而與數據的存儲結構無關
              B)
            算法的時間復雜度是指執行算法所需要的計算工作量
              C)
            數據的邏輯結構與存儲結構是一一對應的
              D)
            算法的時間復雜度與空間復雜度一定相關

              (2)
            在結構化程序設計中,模塊劃分的原則是(D)
              A)
            各模塊應包括盡量多的功能
              B)
            各模塊的規模應盡量大
              C)
            各模塊之間的聯系應盡量緊密
              D)
            模塊內具有高內聚度、模塊間具有低耦合度

              (3)
            下列敘述中正確的是(A)
              A)
            軟件測試的主要目的是發現程序中的錯誤
              B)
            軟件測試的主要目的是確定程序中錯誤的位置
              C)
            為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作
              D)
            軟件測試是證明軟件沒有錯誤

              (4)
            下面選項中不屬于面向對象程序設計特征的是(C)
              A)
            繼承性       
              B)
            多態性
              C)類比性
              D)封裝性

              (5)
            下列對隊列的敘述正確的是(D)
              A)
            隊列屬于非線性表
              B)
            隊列按“先進后出”原則組織數據
              C)
            隊列在隊尾刪除數據
              D)
            隊列按“先進先出”原則組織數據

             (6)對下列二叉樹
                                      A

               

                       B                        C

             

            D                   E    F                  X

                   

             Y                         Z

              進行前序遍歷的結果為(C)

             

              A) DYBEAFCZX 

              B) YDEBFZXCA

              C) ABDYECFXZ 

              D) ABCDEFXYZ


              (7) 某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為(A)

              A) n+1 
              B) n-1 
              C) 2n 
              D) n/2

              (8) 在下列關系運算中,不改變關系表中的屬性個數但能減少元組個數的是(B)

              A)  
              B)
             
              C)
            投影 
              D)
            笛卡兒乘積

              (9)E-R圖中,用來表示實體之間聯系的圖形是(C)

              A) 矩形 
              B)
            橢圓形 
              C)
            菱形 
              D)
            平行四邊形

              (10)下列敘述中錯誤的是(A)

              A) 在數據庫系統中,數據的物理結構必須與邏輯結構一致

              B) 數據庫技術的根本目標是要解決數據的共享問題

              C) 數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫

              D)數據庫系統需要操作系統的支持


            。11)算法中,對需要執行的每一步操作,必須給出清楚、嚴格的規定,這屬于算法的(C)

              A)正當性 
              B
            )可行性 
              C
            )確定性 
              D
            )有窮性

             
             。12)下列敘述中錯誤的是(D)

              A)計算機不能直接執行用C語言編寫的源程序

              BC程序經C編譯程序編譯后,生成后綴為.obj的文件是一個二進制文件

              C)后綴為.obj的文件,經連接程序生成后綴為.exe的文件是一個二進制文件

              D)后綴為.obj.exe的二進制文件都可以直接運行

             

             。13)按照C語言規定的用戶標識符命名規則,不能出現在標識符中的是(B)

              A)大寫字母 
              B
            )連接符 
              C
            )數字字符 
              D
            )下劃線

             

             。14)以下敘述中錯誤的是(C)

              AC語言是一種結構化程序設計語言

              B)結構化程序有順序、分支、循環三種基本結構組成

              C)使用三種基本結構構成的程序只能解決簡單問題

              D)結構化程序設計提倡模塊化的設計方法

             

             。15)對于一個正常運行的C程序,以下敘述中正確的是(A)

               A)程序的執行總是從main函數開始,在main函數結束

               B)程序的執行總是從程序的第一個函數開始,在main函數結束

               C)程序的執行總是從main函數開始,在程序的最后一個函數中結束

               D)程序的執行總是從程序的第一個函數開始,在程序的最后一個函數中結束

            (16)設變量均已正確定義,若要通過scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);語句為變量a1a2賦數值1020,為變量c1c2賦字符XY。以下所示的輸入形式中正確的是(注:□代表空格字符)(D)
              
            A10X20Y〈回車〉   
              B
            10X20Y〈回車〉 
              
            C10X〈回車〉       
              
            D
            10X〈回車〉

                20Y〈回車〉            20Y〈回車〉

             。
            17)若有代數式(其中e僅代表自然對數的底數,不是變量),則以下能夠正確表示該代數式的C語言表達式是(C)
              
            A)sqrt(abs(n^x+e^x))           
              B) sqrt(fabs(pow(n,x)+pow(x,e)))
              C)sqrt(fabs(pow(n,x)+exp(x)))    
              D) sqrt(fabs(pow(x,n)+exp(x)))

             
              
            (18)設有定義:int k=0;,以下選項的四個表達式中與其他三個表達式的值不相同的是(A)
              Ak++     
              B)k+=1    
              C
            )++k   
              D)k+1

              (
            19)有以下程序,其中%u表示按無符號整數輸出(B)

              main()

              {unsigned int x=0xFFFF;   /* x的初值為十六進制數 */

                printf(“%u\n”,x);

              }
              
            程序運行后的輸出結果是
              A-1     
              B
            65535    
              C
            32767  
              D
            0xFFFF

              (20)設變量xy均已正確定義并賦值,以下if語句中,在編譯時將產生錯誤信息的是(C)

              A)if(x++);                       
              B)if(
            x>y&&y!=0); 

              C)if(x>y) x- -                       
              D)if(y<0) {;}

                else y++;                           else x++;

             (21)以下選項中,當x為大于1的奇數時,值為0的表達式(D)

              A)x%2==1     
              B)x/2     
              C
            )x%2!=0   
              D)x%2==0

              (22)以下敘述中正確的是(C)

              Abreak語句只能用于switch語句體中

              B)continue語句的作用是:使程序的執行流程跳出包含它的所有循環

              C)break 語句只能用在循環體內和switch語句體內

              D)在循環體內使用break語句和continue語句的作用相同

              (23)有以下程序(A)

              main()

              {int k=5,n=0;

               do

               {switch(k)

                {case1:    case3:n+=1; break;

              default;n=0;k--;

              case2:  case4:n+=2;k--;break;

              }

              printf(“%d”,n);

              }while(k>0&&n<5);

              }

            程序運行后的輸出結果是
              A235    
              B
            0235   
              C
            02356    
              D
            2356

              (24)有以下程序

            mian()

            {int i,j;

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

            {for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);

            printf(“\n”);

            }

            }

            程序運行后的輸出結果是(B)
              A)    1*1=1  1*2=2  1*3=3          B) 1*1=1  1*2=2  1*3=3

            2*1=2  2*2=4                    2*2=4  2*3=6

            3*1=3                           3*3=9

            C) 1*1=1                         D) 1*1=1

                  1*2=2   2*2=4                   2*1=2   2*2=4

                  1*3=3   2*3=6   3*3=9           3*1=3   3*2=6  3*3=9

              (25)以下合法的字符型常量是(A)

              A)”\x13”      
              B)”\018”      
              C)”65”       
              D)”\n”

            26)在C語言中,函數返回值的類型最終取決于(A)

              A)函數定義時在函數首部所說明的函數類型

              B)return語句中表達式值的類型

              C)調用函數時主函數所傳遞的實參類型

              D)函數定義時形參的類型

             。27)已知大寫字母AASCII碼是65,小寫字母aASCII碼是97,以下不能將變量c中大寫字母轉換為對應小寫字母的語句是(D)

              A)c=(c-A)&+’a’                   
              B)c=c+32

              C)c=c-‘A’+’a’                       
              
            D)c=(‘A’+c)&-‘a’

               (28)有以下函數

                 int fun(char *s)

                 {char *t=s;

                  while(*t++);

                   return(t-s); 

              }

              該函數的功能是(B)

              A)比較兩個字符的大小           
              B)
            計算s所指字符串占用內存字節的個數

              C)計算s所指字符串的長度       
              D)
            s所指字符串復制到字符串t

             。29)設已有定義:float x;則以下對指針變量p進行定義且賦初值的語句中正確的是(D)
              A)float  *p=1024;                 
              B)int  *p=(float x);

            C)float   p=&x;                  
              D)float *P=&x;

              30)有以下程序

                    #include  

                    main()

                   {int n,*p=NULL;

            *p=&n;

              printf(“Input n:”);   scanf(“%d”,&p);   printf(“output n:”);  printf(“%d\n”,p);

              }

              該程序試圖通過指針p為變量n讀入數據并輸出,但程序有多處錯誤,以下語句正確的是(A)

              Aint n,*p=NULL; 
              B)*p=&n;   
              C)scanf(“%d”,&p)  
              D)printf(“%d\n”,p);

              (31)以下程序中函數f的功能是:當flag1時,進行有由小到大排序;當flag0時,進行由大到小排序。

               void f(int  b[],int  n,int  flag)

               {int  i,j,t;

            for(i=0;i

             for (j=i+1;j

               if(flag?b[i]>b[j]:b[i]

            }

            main()

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

              f(&a[2],5,0); f(a,5,1);

               for(i=0;i<10;i++) printf(“%d,”a[i]);

            }

            程序運行后的輸出結果是(B)

              A1,2,3,4,5,6,7,8,9,10,
              B
            3,4,5,6,7,2,1,8,9,10,

              C5,4,3,2,1,6,7,8,9,10,
              D
            10,9,8,7,6,5,4,3,2,1,

             。32)有以下程序

            void f(int b[])

            {int i;

              for(i=2;i<6;i++)  b[i]*=2;

            }

             main()

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

            f(a);

            for(i=0;i<10;i++) printf(“%d,”,a[i]);

            }

            程序運行后的輸出結果是(B)

              A1,2,3,4,5,6,7,8,9,10,
              B1,2,6,8,10,12,7,8,9,10

              C1,2,3,4,10,12,14,16,9,10,

              D1,2,6,8,10,12,14,16,9,10,

             。33)有以下程序

                typedef struct{int b,p;}A;

                void f(A c)   /*注意:c是結構變量名 */

               {int j;

            c.b+=1; c.p+=2;

            }

            main()

            {int i;

            A  a={1,2};

            f(a);

            printf(“%d,%d\n”,a.b,a.p);

            }

            程序運行后的輸出結果是(D)

             A2,3  
              B
            2,4   
              C
            1,4   
              D
            1,2

             。34)有以下程序

            main()

            {int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,j,k,t;

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

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

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

                  if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

              for(i=0;i<4;i++)printf(“%d,”,a[i][j]);

            }

            程序運行后的輸出結果是(A)

              A)1,6,5,7,  
              B)8,7,3,1,  
              C)4,7,5,2,  
              D)1,6,2,1,

              (35) 有以下程序

            main()

            {int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;

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

             for(k=i+i;k<4;k++) if(a[i][i]

            for(i=0;i<4;i++)printf(“%d,”,a[0][i]);

            }

            程序運行后的輸出結果是(B)
              
            A)6,2,1,1,   
              B)6,4,3,2,   
              C)1,1,2,6,   
              D)2,3,4,6,

            (36) 有以下程序

            void f(int  *q)

              {int i=0;

              for( ; i<5;i++)(*q)++;

              }

              main()

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

              f(a);

              for(i=0;i<5;i++)printf(“%d,”,a[i]);

              }

              程序運行后的輸出結果是(B)

              A)2,2,3,4,5,    
              B)6,2,3,4,5,   
              C)1,2,3,4,5,     
              D) 2,3,4,5,6,

              (37) 有以下程序

              #include

              main()

              {char  p[20]={‘a’,’b’,’c’,’d’},q[]=”abc”, r[]=”abcde”;

              strcpy(p+strlen(q),r);  strcat(p,q);

              printf(“%d%d\n”,sizeof(p),strlen(p));

              }

              程序運行后的輸出結果是(C)

              A)20 9   
              B)9  9  
              C
            )20  11 
              D)11  11

              (38) 有以下程序

               #include

              main()

              {char  p[20]={‘a’,’b’,’c’,’d’},q[]=”abc”, r[]=”abcde”

              strcat(p,r); Strcpy(p+strlen(q),q);

              Printf(“%d \n”,sizeof(p));

              }

              程序運行后的輸出結果是(B)

              A)9  
              B)6 
              C
            )11 
              D)7

              (39) 有以下程序

              #include

              main()

            void f(char p[][10], int n ) /*  字符串從小到大排序  */

            { char t[10];      int i,j;

              for(i=0;i

              for(j=i+1;j

               if(strcmp(p[i],p[j])>0)  {strcpy(t,p[i]);  strcpy(p[i],p[j]);  strcpy(p[i],t);  }

            }

            main()

             {char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”};

            f(p,5);

              printf(“%d\n”,strlen(p[0]));

            }

              程序運行后的輸出結果是(C)

              A) 2         
              B) 4            
              C
            ) 6                 
              D) 3

              (40) 有以下程序

              void f(int  n, int  *r)

              {int r1=0;

               if(n%3==0)        r1=n/3;

              else  if(n%5==0)    r1=n/5;

              else  f(--n,&r1);

              *r=r1;

              }

              main()

              {int m=7,r;

               f(m,&r);    printf(“%d\n,r”);

              }

              程序運行后的輸出結果是(A)

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

            (41)有以下程序

                 main(int  argc,char  *argv[])

                 {int n=0,i;

              for(i=1;i  n=n*10+*argv[i]-‘0’;

              printf(“%d\n”,n);

              }

              編譯連接后生成可執行文件tt.exe,若運行時輸入以下命令行

              tt  12  345  678

              程序運行后的輸出結果是(D)

              A) 12         
              B) 12345            
              C
            )12345678            
              D) 136

              (42) 有以下程序

            int a=4;

            int f(int  n)

            {int  t=0;  static int  a=5;

             if(n%2) {int  a=6;  t+=a++;}

              else {int   a=7 ;t+=a++;}

              return  t+a++;

              }

              main()

              {int  s=a,i=0;

              for(;i2;i++   s+=f(i);

              printf (“%d\n”,s);

              }

              程序運行后的輸出結果是(B)

              A)24         
              B)28       
              C
            )32       
              D)36

              (43)有一個名為init.txt的文件,內容如下:

              #define    HDY(A,B)     A/B

              # define    PRINT(Y)     Printf(“y=%d\n.,Y)

              有以下程序

              #include   init.txt

              main()

              {int  a=1,b=2,c=3,d=4,k;

              K=HDYa+c,b+d);

              PRINTK);

              }

              下面針對該程序的敘述正確的是(D)

              A)編譯有錯             
              B
            )運行出錯   

              C)運行結果為 y=0       
              D)
            運行結果為       y=6

              (44)有以下程序

              main()

              {char   ch[]=uvwxyz”,*pc;

                Pc=ch;   printf(“%c\n”,*(pc+5));

              }

              程序運行后的輸出結果是(A)

              A)z        
              B)0      
              C
            )
            元素ch[5]的地址      
              D)
            字符y的地址

              (45)有以下程序

              struct S {int  n;  int  a[20];};

              void  f(struct S  *P)

              {int  i,j,t;

              for(i=0;in-1;i++)

              for(j=i+1;jn;j++)

              if(p->a[i]>p->a[j])  { t=p->a[i];  p->a[i]=p->a[j];  p->a[j]=t; }

              }

              main()

              {int i; struct  S s={10,{2,3,1,6,8,7,5,4,10,9}};

              f(&s);

              for(i=0;i  printf(“%d”,s.a[i]);

              }

              程序運行后的輸出結果是(A)

              A1,2,3,4,5,6,7,8,9,10,           
              B
            10,9,8,7,6,5,4,3,2,1,    

              C2,3,1,6,8,7,5,4,10,9,           
              D
            10,9,8,7,6,1,2,3,4,5

             (46) 有以下程序

              struct S{ int n;  int  a[20];  };

              void f(int  *a,int  n)

              {int i;

               for(i=0;i  a[i]+=i;

              }

              main()

              {int  i;  struct S s={10,{2,3,1,6,8,7,5,4,10,9}};

              f(s.a,  s.n);

              for(i=0;i  printf(“%d”,s.a[i]);

              }

              程序運行后的輸出結果是(A)

              A2,4,3,9,12,12,11,11,18,9,           
              B
            3,4,2,7,9,8,6,5,11,10,    

              C2,3,1,6,8,7,5,4,10,9,               
              D
            1,2,3,6,8,7,5,4,10,9,

              (47) 有以下程序段

              typedef struct node { int  data;  struct  node  *next;  } *NODE;

              NODE  p;

              以下敘述正確的是(C)

              Ap是指向struct node結構變量的指針的指針

              BNODE  p;語句出錯

              Cp是指向struct node結構變量的指針

              Dpstruct node結構變量

             。48)有以下程序

              main()

              {unsigned  char  a=2,b=4,c=5,d;

               d=a|b;  d&=c;  printf(“%d\n”,d); }

              程序運行后的輸出結果是(B)

              A3         
              B
            4        
              C
            5           
              D
            6

             。49)有以下程序

              #include   

              main()

              {FILE *fp;    int  k,n,a[6]={1,2,3,4,5,6};

              fp=fopen(“d2.dat”,”w”);

              fprintf(fp,”%d%d\n”,a[0],a[1],a[2]);   fprintf(fp, “%d%d%d \n”,a[3],a[4],a[5]);

              fclose(fp);

              fp=fopen(“d2.dat”,”r”);

              fscanf(fp, “%d%d”,&k,&n);      printf(“%d%d\n”,k,n);

              fclose(fp);

              }

              程序運行后的輸出結果是(D)

              A)1   2       
              B)1   4      
              
            C
            )123   4        
              D)  123     456

              (50)有以下程序

              #include   

              main ()

              {FILE  *fp;   int  i,a[6]={1,2,3,4,5,6k};

              fp=fopen(“d3.dat”,”w+b”);

              fwrite(a,sizeof(int),6,fp);

              fseek(fp,sizeof(int)*3,SEEK_SET);/*該語句使讀文件的位置指針從文件頭向后移動3int型數據*/

              fread(a,sizeof(int),3,fp);       fclose(fp);

              for(i=0;i<6;i++)     printf(“%d,”,a[i]);

              }

              程序運行后的輸出結果是(A)

              A)4,5,6,4,5,6,    
              B)1,2,3,4,5,6,    
              C)4,5,6,1,2,3,    
              D)6,5,4,3,2,1

            二.填空題(每空2分,共40分)請將每一個空的正確答案寫在答題卡[1][20]序號的橫線上,答在試卷上不得分。注意:以命令關鍵字填空的必須寫完整.

             。1)    在深度為7的滿二叉樹中,度為2的結點個數為___63____。

             。2)    軟件測試分為白箱(盒)測試和黑箱(盒)測試,等價類劃分法屬于__黑箱(或黑盒)   測試。

             。3)    在數據庫系統中,實現各種數據管理功能的核心軟件稱為    __數據庫管理系統__。

             。4)    軟件生命周期可分為多個階段,一般分為定義階段、開發階段和維護階段。編碼和測試屬于  開發_____階段。

             。5)在結構化分析使用的數據流圖(DFD)中,利用數據字典   對其中的圖形元素進行確切解釋。

            6)執行以下程序后的輸出結果是  a=14     。

              main()

              {int a=10;

              a=(3*5,a+4);    printf(“a=%d\n”,a);

              }

              (7) 當執行以下程序時,輸入1234567890<回車>,則其中while循環體將執行   0       次。

             。include

              main()

              {char ch;

               While((ch=getchar())==’0’)  printf(“#”);

              }

             (8)   (8)以下程序的運行結果是   m=4 k=4 i=5 k=5    。

              int  k=0;

              void fun(int  m)

              {  m+=k; k+=m; printf(“m=%d\n  k=%d  ”,m,k++);}

                 main()

              { int i=4;

               fun(i++); printf(“i=%d  k=%d\n”,i,k);

              }

             (9)   (9)以下程序的運行結果是  #&    。

                  main()

               {int a=2,b=7,c=5;

                 switch(a>0)

              {case 1:switch(b<0)

                    {case 1:switch(“@”); break;

                      Case 2: printf(“!”); break;

              }

              case 0: switch(c==5)

            { case 0: printf(“*”); break;

             case 1: printf(“#”); break;

             case 2: printf(“$”); break;

             }

            default : printf(“&”);

            }

            printf(“\n”);

            }

            (10)以下程序的輸出結果是  9

            # include

            main()

            { printf(“%d\n”,strlen(“IBM\n012\1\\”));

            }

            (11)已定義char ch”$”;int i=1,j;執行j=!ch&&i++以后,i的值為1 

            12)以下程序的輸出結果是  5  4   

            # include

            main()

            { char a[]={‘\1’,’\2’,’\3’,’\4’,’\0’};

            printf(“%d  d\n”,sizeof(a),srelen(a));

            }

              (13)設有定義語句:int a[][3]={{0},{1},{2}};,則數組元素a[1][2]的值為0  

              14)以下程序的功能是:求出數組x中各相鄰兩個元素的和依次存放到a數組中,然后輸出。請填空。

            main()

            {int x[10],a[9],I;

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

            scanf(“%d”,&x[i]);

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

            a[i-1]=x[i]+   x[i-1]    ;

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

            printf(“%d”,a[i]);

            printf(“\n”);

            (15) 以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數中的最大值,輸出到屏幕上,請填空:

            main()

            {int x,y,z,max,*px,*py,*pz,*pmax;

            scanf(“%d%d%d”,&x,&y,&z);

            px=&x;

            py=&y;

            pz=&z;

            pmax=&max;

               *pmax=*px(或*pmax=x     ;

            if(*pmax<*py)*pmax=*py;

            if(*pmax<*pz)*pmax=*pz;

            printf(“max=%d\n”,max);

            }


            国产在线精品一区二区三区不卡_亚洲第一极品精品无码_永久免费无码网站在线观看_亚洲av综合日韩