C語言模擬試題5

iamzxf發表於2014-12-30

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

1、若有代數式,則不正確的C語言表示式是(      )。

A.a/b/c*e*3    B.3*a*e/b/c    C.3*a*e/b*c    D.a*e/c/b*3

2、下面四個選項中,均是合法轉義字元的選項是(      )。

A. ‘\’’     ‘\\’    ‘\n’      B. ‘\’     ‘\017’   ‘\”’

C. ‘\018’   ‘\f’  ‘xab’      D. ‘\\0’   ‘\101’   ‘x1f’

3、下列符號串中,不屬於C語言保留字的是(      )。

A.if      B.then     C.static     D.for

4、下列敘述中錯誤的是(      )。

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

B.C程式經C編譯程式編譯後,生成字尾為.obj的檔案是一個二進位制檔案

C.字尾為.obj的檔案,經連線程式生成字尾為.exe的檔案是一個二進位制檔案

D.字尾為.obj和.exe的二進位制檔案都可以直接執行

5、設變數n為float型,m為int型別,則以下能實現將n中的數值保留小數點後兩位,第三位進行四捨五入運算的表示式是(      )。

A.n=(n*100+0.5)/100.0      B.m=n*100-0.5, n=m/100.0

C.n=n*100-0.5/100.0        D.n=(n/100+0.5)*100.0

6、已有定義int a=-2;和輸出語句printf(“%8lx”, a);以下正確的敘述是(      )。

A.整型變數的輸出格式符只有%d一種

B.%x是格式符的一種,它可以適用於任何一種型別的資料

C.%x是格式符的一種,其變數的值按十六進位制輸出,但%8lx是錯誤的

D.%8lx不是錯誤的格式符,其中數字8規定了輸出欄位的寬度

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

A.1      B.2      C.3      D.4

8、以下能對二維陣列a進行正確初始化的語句是(      )。

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

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

9、設有定義語句“intd[3][5]={{1},{2},{3}}, (*p)[5]=d;”,則下列表示式中值不為0的是(      )。

A.*&d[1][2]      B.p[1][2]      C.*(*p+5)      D.*(*(p+1)+2)

10、判斷字串a和b是否相等,應當使用(      )。

A.if(a==b)            B.if(a=b)

C.if(strcpy(a,b))        D.if(strcmp(a,b))

 

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

1、typedef intasd;語句的正確含義是________________________________。

2、字串“ab\n\\012\\”的長度是_________________________。

3、若int型資料在記憶體中佔兩個位元組,有inta[5]={1,2,3,4,5},*p=a;其中a=2000;則*p=__________,p+3=_____________。

4、break語句只能用在_________________語句或_________________語句中。

5、在函式中定義的區域性變數,若未定義其儲存類別,其預設的儲存類別是__________。

6、若int m[10]={4,1,2,8,2,1,0,7,5,1};則陣列元素m[m[4]+m[8]]=____,*m+m[9]=_____。

7、在C函式中,實參可以是常量、變數、函式和表示式,而形參只能由         組成。

8、已知inta=4,b=20;則(a+3)/3+a%b=___________。

9、feof(fp)函式用來判斷檔案是否結束,若遇到檔案結束,函式值為_____,否則為___。

10、設二進位制數x的值是11001101,若想通過x&y運算使x中的低4位保留原值,高4位清0,則y的二進位制數是___________________。

 三、判斷題:本題共5小題,每小題2分,滿分10分。

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

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

3、(      )巨集定義#define POWER(x) (x)*(x)在任何情況下都可以準確計算出x的平方。

4、(      )7&3+12的值是15。

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

 

四、應用題:本題共5小題,每小題6分,滿分30分。

 

1、寫出下列程式的執行結果:

#include <stdio.h>

void main()

{

   inta[10]={1,2,2,3,4,3,4,5,1,5};

   intn=0,i,j,c,k;

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

  {   

       c=a[i];

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

          if(a[j]==c)

           {

               for(k=j;k<10-n;k++)

                   a[k]=a[k+1];

               n++;

           }

  }

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

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

}

 

2、下面程式是將兩個按值遞增有序的陣列合併成一個按值遞增有序的陣列,請填空:

#include <stdio.h>

void main()

{

   int a[3]={5,9,19}, b[5]={6,12,17,24,37};

   int c[10],i,j,k;                              [1]:_______________

   i=j=k=0;

   while(i<3&&j<5)                            [2]:_______________

       if(     [1]    )

       {   c[k]=a[i]; i++; k++;  }                [3]:_______________

       else  {  c[k]=b[j]; j++; k++;  }

   while(     [2]     )   {   c[k]=a[i]; i++; k++;  }

   while(     [3]     )   {   c[k]=b[j]; j++; k++;  }

}

3、寫出下列程式的執行結果:

#include <stdio.h>

void invert(int *s, int i, int j)

{

   int t;

   if(i<j)

   {

       invert(s, i+1, j-1);

       t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;

   }

}

void main()

{

   inta[6]={10,6,23,-90,0,3},i;

   invert(a,0,5);

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

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

   printf(“\n”);

}

 

4、寫出下列程式的執行結果:

#include <stdio.h>

#include <string.h>

int f1(int a)

{

    int b=0;

static int c=3;

    b+=1; c++;

    return (a+b+c);

}

 

void main()

{

    int a=1,i;

    char s1[10]=“java”, s2[10]=“basic”,s[10];

    for(i=0;i<3;i++)    printf("%3d ",f1(a));

    printf(“\n”);

    if(strcmp(s1,s2)) {strcpy(s,s1); puts(s);}

    printf(“%d,%s\n”, strlen(s2),strcat(s2,s1));  //注意函式處理引數的順序

}

5、下面的函式是在帶頭結點的單連結串列中,在第i個結點的前面插入一個結點,請填空:

struct LNode *Insert( struct LNode *head, int i)

{

    struct LNode *p, *s;

    int j;                                [1]:                     

    p=head;  j=____[1]_____;

    while( p &&j<i-1 )                    [2]:                     

    {  p=   [2]    ; j++;  }

    if( ! p || j>i-1 )  //i值非法               [3]:                     

       exit(0);

    s=(structLNode*)malloc(sizeof(struct LNode));

    scanf(“%d”, &s->data);

   s->next=   [3]      ; p->next=s;

    return head;

}

 

 

五、程式設計:本題共2小題,滿分20分

1、從鍵盤輸入10個整數,將它們按從小到大的順序輸出。(8分)

2、有10個學生,每個學生的資料包括學號、姓名、3門課程的成績,從鍵盤輸入10個學生資料,要求輸出每個學生的平均分,以及最高分的學生的資料(包括學號、姓名、3門課程成績、平均分數)。(12分)

相關文章