C語言模擬試題2

iamzxf發表於2014-12-30


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

1、語句printf(“%d”,(a=2)&&(b=-2)); 的輸出結果是(        )。

A.無輸出      B.結果不確定      C.-1     D.1

2、若定義inta=8, b, *p=&b; 則下面兩個獨立的賦值語句p=&a和*p=a的含義為(      )。

A.兩個語句都是使p指向a

B.p=&a是使p指向a,而*p=a是將a的值賦予*p

C.兩個語句都是將a的值賦予*p

D.p=&a是將a的值賦予*p,而*p=a是使p指向a

3、若k為整型,則while迴圈(        )。

k=10; while(k!=0) k- -;

A.執行10次    B.無限迴圈    C.執行11次     D.執行9次

4、在while(x)語句中的x與下面條件表示式等價的是:(       )。

A.x!=0      B。x==1      C。x!=1     D。x==0

5、以下程式段的輸出結果是(        )。

char str[]= “a girl”;

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

A.6       B.5        C.8       D.7

6、若有宣告doubleb[7][6]; 則對其元素的非法引用是(        )。

A.b[3][5]      B.b[7][5]     C.b[2*3][4]      D.b[0][9-6]

7、已知

struct sk

{    

              int          a;

              float     b;

}data,*p;

若有p=&data 則對data中成員a的正確引用是(        )。

A.(*p).data             B. (*p).a       

C. p->data.a                 D. p.data.a

8、若用陣列名作為函式實參時,則傳遞給形參的是(       )。

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

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

9、若有以下語句:                                          

 typedef struct S

  {  int g;

char h;

}T;

以下敘述中正確的是(     )

A. 可用S定義結構體變數    B. 可用T定義結構體變數

C. S是struct型別的變數   D. T是structS型別的變數

10、設有說明:

union data

{ int i;

struct

{

 int x;chary;

}s;

float f;

}a;

int和float型別變數分別佔4個位元組,變數a在記憶體中所佔位元組數為(     )

A.4         B.5       C.10        D.13

二、填空題:

本題共5 小題,滿分 10 分。

1、已知a=3、b=2,則表示式a*=b+8的值是     

2、設int a=7,b=9,t; 執行完表示式 t= a>b ? a: b 後,t 的值是        

3、C語言表示式 5>9>8 的值是      

4、當執行完以下語句後,變數a的值為     ,e的值為    

a=6; b=++a;

c=- -a; d=a++;

e=a- -;

5、int(*p)[n]中定義的p為                                    指標變數。

 

三、程式閱讀: 本題共6小題,滿分45分

 

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

#include <stdio.h>

int fun()

{  static intx=1;                      

x*=2;

return x;

}

void main()                      

{  int i,s=1;

for(i=1;i<=3;i++) s*=fun();

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

}

 

執行結果:                      

2、輸出100以內能被3和5整除且個位數是0的所有整數,請填空:(9分)

#include <stdio.h>

void main ()                                   填空: ①                

{  int i, j ;                                           

     for(i=0;      ①     ; i++)                         ②                

     { j=i*10;                                     

        if(    ②    &&    ③    )                  ③                

           printf(“%5d”, j);

    }

}

 

 

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

  #include <stdio.h>

  void main( ) 

  {  char c;

      int i;

      for(i=’A’; i<’C’; i++)

      { c=i+32;

         switch(c)

         { case ‘a’:  printf("%c,",c); break;

            case ‘b’: 

case ‘e’:  printf("ok,");

            default:   printf("end");

         }

      }

  }

執行結果:

4、下列函式的功能是求n的階乘,請填空(6分)

#include <stdio.h>

int fun (int n)

{ int f;                            填空: ①                

  if( n<0)

      printf(“n<0, data error\n”);            ②                

   else if( n==0 || n==1)

      f =   ①   

  else f=    ②      ;

  return f;

}

5、程式執行後的輸出結果是:(6分)

#include <stdio.h>

void main()

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

   printf("%d \n ", *(a+1)); 

   printf("%d %d\n",*(a[1]+1),*(*(a+2)+1));

}

假設陣列a的首地址為1000,每個整數佔兩個位元組。

執行結果:

 

 

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

#include <stdio.h>

void main(  )

{ char string[81];

  int j, number=0, token=0;

  char c;

   gets(string);

     for (j=0; (c=string[j]); j++)

     {

         if ( c== ‘ ’ ) token=0;

           else if (token==0){ token=1; number++; }

       }

       printf(“%d token”,number);

   }

輸入字串:2 intsymbol;

執行結果:

四、程式設計。本題共2小題,滿分25分。

 

1、編寫函式fun,其功能是:求出1,1+2,1+2+3各項的值,並放在一維陣列a中傳回主函式。例如:若k=6,則應輸出:1  3 6  10  15  21。

函式原型為:void fun(int *a, int k ) (10分)

 

2、輸入10個學生的資訊,包括學號、姓名、年齡、3門課成績,輸出平均分最高的學生的資訊;統計2門及2門以上不及格的人數。要求使用函式實現。(15分)

①Input(struct Student stu[], int n)

②High_Score(struct Student stu[],int n)

③Total(struct Student stu[], int n)

 

相關文章