C語言模擬試題6

iamzxf發表於2014-12-30

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

1. 下列運算子中,結合方向為“自右至左”的是:[  ]

A. 算術運算子     + - * /     B.左移運算子 <<

C. 賦值運算子=         D. 關係運算子 < <= > >=

2. 用以下語句從鍵盤接收兩個整型值並賦值給整型變數a,b:scanf(“%d,%d”,&a,&b),則以下輸入正確的是:

A. 5,6(回車)            B.5(空格)6(回車)

C. 5(回車)6     (回車)       D. 5(空格)6(空格)

3. 以下程式的輸出結果是:

main( )
{ int a=7,b=5;
  printf(“%d\n”,b=b/a);
}

A. 不確定值     B. 5      C. 1      D. 0

4. 以下程式的輸出結果是:

main()
{  char s1[20]=“China”,s2[20]=“for”,s[10];
   if(strcmp(s1,s2))  printf(“%s\n”, strcat(s2,s1));
   else printf(“%d\n”,strlen(s1));
}
A. Chinafor        B. 5     C.forChina       D. 3

5. C語言中函式呼叫的方式有:

A. 函式呼叫作為語句1種              B. 函式呼叫作為函式表示式1種
C. 函式呼叫作為語句或函式表示式2種
D.函式呼叫作為語句、函式表示式或函式引數3種

6.已知職工記錄描述如下,設變數w中的“生日”是“1993年10月25日”,下列對“生日”的正確賦值方式是:

struct worker
{  int no; char name[20]; char sex;
   structbirth{ int day; int month; int year;}a;
};
struct worker w;
A. day=25; month=10; year=1993;
B. w.birth.day=25;  w.birth.month=10;w.birth.year=1993;
C. w.day=25; w.month=10; w.year=1993;
D. w.a.day=25; w.a.month=10; w.a.year=1993;

7. 若有下面的變數定義,以下語句中合法的是:

int  i,a[10],*p;
A. p=a+2;      B. p=a[5];       C. p=a[2]+2;      D. p=&(i+2);

8. 以下程式的輸出結果為:

main( )
{  int i=010,j=10,*pi,*pj;
   pi=&i; pj=&j;
   printf("%d,%d\n",*pi,*pj);
 }
A. 10,10      B. 8,10     C.010,10     D. 8,8

9. 要開啟一個已存在的非空文字檔案"file"用於修改,選擇正確的語句:

A. fp=fopen("file","r");    B.fp=fopen("file","w");
C. fp=fopen("file","r+");   D. fp=fopen("file","w+");

10. 以下的 for 迴圈 for(x=0,y=0;(y!=123)&&(x<4);x++);中,x++執行的次數:

A. 執行 3 次         B. 執行 4 次
C. 迴圈次數不定      D. 是無限迴圈

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

1. C語言表示式 5>2>7>8 的值是_______________。

2. 當執行完以下語句後,變數a的值為_________,d的值為________,e的值為_________。
a=6; b=++a; c=--a; d=a++; e=a--;

3. 設有以下巨集定義,則執行賦值語句 a=PP+20;(a為int型變數)後,a的值是________。
      #define PR 8
      #define PP PR*40

4. 定義結構體型別時,應使用關鍵字________,定義列舉型別時,應使用關鍵字_________。

5. 若有char a[3]=“as”;則*a=________,*(a+2)=____________。

6. 已知職工記錄描述如下,在Turbo C中(int佔兩個位元組),系統為變數w分配_______位元組的空間。
struct worker
{  int no;
   char  name[20];
   char  sex;
   union { int day;  int month;  int year;}birth;
} w;

7. C語言中的檔案型別有_____________和__________________兩種。

8. 以下程式的輸出結果為__________________。
main( )
{  char c;
   int i;
   for(i=65;i<68;i++) 
   { c=i+32;
     switch(c)
    { case 'a':
     case 'b':
     case'c':printf("%c,",c);break;
default:printf("end");}
}
}

9. 下面程式段的輸出結果是(        )。
 char a=111; a=a^0; printf(“%d %o\n”,a,a);

10. 設 int a=7,b=9,t;執行完表示式t=(a>b)?a:b後,t的值是___________。

三、寫出下列程式的執行結果(每題4分,共12分)

1.invert(int*s,int i,int j);
main( )
{  int a[6]={10,6,23,-90,0,3},i;

      invert(a,0,5);

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

      printf(“\n”);

}

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;

      }

}

2.#include<stdio.h>
#include <string.h>

f1(int a)

   {  int b=0; static int c=3;

      b+=1;  c++;

      return(a+b+c);

    }

   main()

   {  int a=1,i;

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

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

      printf(“\n”);

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

printf(“%d,%s\n”,strlen(s2),strcat(s2,s1));

}

3.#include<stdio.h>

#define MAX 100

main()

   {  intf[MAX],i,j,k=2,m=5;

for(i=0;i<=m;i++)  f[i]=1;

f[k-1]=2;

for(i=k;i<=m;i++)

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

  f[i]+=f[j];

     printf("%d%5d%5d\n",k,m,f[m]);

   }

四.閱讀下列程式,在______處填入適當內容,使程式完整(每空2分,共28分)。

1.求100~200間的全部素數。

#include <stdio.h>

     (1)   

main()

{  int m,k,i,;

  for(m=101;m<=200;m+=2)

  {  

      k=sqrt(m);

      for(i=  (2)  ;i<=k;i++)     if(m%i==0)      (3)  ;

      if(i==  (4)  )

         printf("%d ",m);

   }

}
2.用選擇法對陣列中的10個字元按由大到小排序。

#include <stdio.h>

void sort(  (1)  )

{   int i,j,k;

char t;

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

    {       (2) ;

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

           if (  (3)  )   k=j;

        t=a[k];  a[k]=a[i]; a[i]=t;}

}

main( )

{   char s[10];

int i;

   for(i=0;i<10;i++)    scanf(“%c”,&s[i]);

      (4)  ;

    printf(“thesorted array:\n”);

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

      printf(“%3c”, (5)  );

    printf(“\n”);

}
3.輸入3×4陣列,用指標方法實現將每行中的最小數與第0列元素互換。

#include <stdio.h>

swap(int  (1)   )

main()

{  int a[3][4], i, j,*p=a[0];

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

     for(j=0;j<4;j++)   scanf(“%d”,p++);

for(p=&a[0][0];p<a[0]+12;  (2)  )

        swap(p);

  (3)  ;

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

   {  for(j=0;j<4;j++)  printf(“%3d”,*p++);

      printf(“\n”);

}

}

swap(int  (1)  )

{  int min, i, *p2=p1,*p3;

      (4)  ;

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

   { if(*p2<*p3)  p3=p2;

    (5)  ;

   }

min=*p1;*p1=*p3;*p3=min;

    }

五、 程式設計題 (本題共2小題,每小題10分,共20分)

1. 求1+2!+3!+...+20!的和。

2、用指標作函式引數,程式設計序求一維陣列中的最大和最小的元素值。

相關文章