C語言模擬試題4

iamzxf發表於2014-12-30

一、單項選擇題。本題共10小題,每小題2分,滿分20分

1、下列運算子中優先順序最低的是                                  (       )

A.?:    B.&&    C.+    D.!=

2、對for(表示式1;;表示式3)可理解為                          (       )

A.for(表示式1;0表示式3)          B.for(表示式1;1;表示式3)

C.for(表示式1;表示式1;表示式3)  D.for(表示式1;表示式3;表示式3)

 3、如果在一個函式的複合句中定義了一個變數,該變數               (       )

A.在該函式中有效          B.只在該複合語句中有效

C.在本程式範圍內均有效    D.為非法變數

4、已知x=43,ch= ‘A’, y=0,則表示式(x>=y&& ch < ‘A’ && !y)的值是 (       )

A. 0    B. 語法錯    C. 1    D.“假”

5、若用陣列名作為函式呼叫的實參,傳遞給形參的是                 (       )

A.陣列的首地址          B.陣列第一個元素的值

C.陣列中全部元素的值    D.陣列元素的個數

6、設有說明:char w;int x;float y;double z;則表示式w*x+z-y值的資料型別是(      )

A.float    B.char    C.int    D.double

7、設int a1=7,a2=1,x;進行操作x=(a1<<1)&~(a2<<2)後x的值為(       )

A.0    B.1    C.10    D.以上都錯

8、設有以下結構體定義:

   struct student {

     char name[10];

     char sex;

     int age;

  }staff;

則下面的敘述不正確的是                                       (       )

A.struct是結構體型別的關鍵字       B.structstudent是結構體型別名

C.staff 是使用者定義的結構體型別名    D.name,sex和age都是結構體成員名

9、若有以下定義:chars[10]=“include”,*p=s;則不能代表字元u的表示式是(       )

A.s[4]    B.s+4    C.*(p+4)    D.p+=4,*p

10、以下正確的描述是                                          (       )

A.continue語句的作用是結束整個迴圈的執行

B.break語句只用在迴圈語句和switch語句中

C.在迴圈體內使用break語句或continue語句的作用相同

D.從多重迴圈巢狀中退出時只能使用goto語句

二、填空題。本題共10小題,每小題2分,滿分20分

1、C語言中的識別符號只能有三種字元組成,它們是字母、                     

2、假設m是一個三位數,用a、b、c表示各位的數字,則從左到右各個數字是bac的三位數的表示式是                                      

3、若有定義:int b=7;float a=2.5,c=4.7,則表示式a+(int)(b/3*(int)(a+c)/2)%4的值為           

4、設x是一個16位整數,若要通過x | y運算使x低8位置1,高8位不變,則y的八進位制數是                  

5、函式swap(int x,int y)可以完成對x和y值的交換,若a=1,b=2,則執行完swap(a,b);語句後,a和b的值分別為                   。

6、與表示式x*=y-2等價的另一種書寫形式為                     

7、設有int a=1,b=2,c=3,d=4,m=2,n=2;則執行(m=a>b) && (n=c>d)後n的值為     

8、如果要定義一個檔案型指標fp,應該使用的定義語句是                 

9、判斷字串s1是否大於字串s2,應當使用                            命令。10、若有如下定義:int m[]={4,1,2,8,2,0,7,5,1,3},則陣列元素m[m[4]+m[8]]的值是       ,*m+m[9]的值是           

三、判斷題:本題共10小題,每小題1分,滿分10分

1、若巨集定義為#definef(x) x*x,則f(3+4)的值為49。            (     )

2、字串“china”在記憶體中佔5個位元組。                     (     )

3、inta=b=c=3;是正確的變數定義。                           (     )

4、從變數的作用域來分,變數可分為全域性變數和區域性變數。     (     )

5、邏輯運算子的優先順序都低於算術運算子。                   (     )

6、定義二維陣列並進行了初始化,第一維的長度可以省略。     (     )

7、開啟檔案的函式是fclose()。                             (     )

8、外部變數必須定義在檔案的開頭。                         (     )

9、字元‘\0’是字串的結束標誌,其ASCII程式碼為0。        (     )

10、呼叫strlen(“abc\0ef\0g”)的返回值是8。                 (     )

四、應用題,本題共6小題,滿分35分

1、寫出下列程式的執行結果(6分)

#include <stdio.h>

int func(int a)

{  intb=0;

  static int c=3;

  b++;  c++;

  return a+b+c;

}

void main()                 

{  

int a=2,i;

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

     printf(“%3d”, func(a));

}

2、寫出下列程式的執行結果(5分)

#include <stdio.h>

int func(int x)

{  int y;

   if(x==0 || x==1)

      y=3;

   else y=x-func(x-2);

   return y;

}

void main()

{ printf(“%d\n”, func(9));

}

 

3、寫出下列程式的執行結果(6分)

#include <stdio.h>

void main()

{  int i;

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

      switch (i%5)

      {

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

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

         default: printf(“\n”);

          case 2: printf(“&”);

      }

}

 

4、寫出下列程式的執行結果(6分)

#include<stdio.h>

void func(int *p)

{ while(*p != -999)

  {   if( *p%2==0 )

 

         printf(“%4d”, *p);

      p++;

   }

}

void main()

{  inta[]={10,32,13,24,45,96,17,-999};

   inti, *pa=a;

   for(i=0; a[i]!= -999;i++ )

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

   printf(“\n”);

   func(pa);

}

5、下列程式的功能是求1!+2!+…+n! > 2000的最小n值,請填空:(6分)

#include <stdio.h>

void main()

{  int i, j, s=0, k;

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

   {   k=1;

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

           (1)  ;

      s= s+     (2)    ;

      if( s>2000 )

            (3)     ;

   }

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

}

 

填空:(1)         

     (2)         

     (3)         

 

6、下列程式的功能是生成並列印某數列的前20項,該數列的第1、2項分別為0和1,以後每個奇數編號的項是前兩項之和,偶數編號的項是前兩項差的絕對值,生成的20個數存放在陣列a中,並按每行4項輸出,請填空:(6分)

#include <stdio.h>

void main()

{  int a[21], i, j;

   a[1]=0; a[2]=1;

   i=3;

   do

   {  a[i]=   (1)    ;

      a[i+1]=    (2)    ;

      i=   (3)   ;

   }while( i<20 );

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

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

       if( i%4==0 )

          Printf(“\n”);

   }

}

 

填空:(1)         

     (2)         

     (3)         

 

五、程式設計題,本題共2小題,滿分15分。

1、輸入50個0到4之間的整數,程式設計統計每個整數的個數,並輸出。(5分)

 

 

2、輸入10個學生的學號和三門課成績,求每個學生三門課的總成績,並按總成績從高到低的順序輸出。(10分)

 

 

相關文章