C語言程式設計測試2 (附參考答案)

來源:互聯網
上載者:User

C語言程式設計測試2 (附參考答案)
範圍:     1~6章

試題

一、單項選擇題(1~30題,每題1分;31~40題,每題2分;共50分)
1. 若有以下定義:
 char s='/072';
 則該語句:
 (A) 使s的值包含1個字元  (B) 定義不合法,s的值不確定
 (C) 使s的值包含4個字元  (D)  使s的值包含3個字元 

2.以下的選項中,非法的C語言逸出字元是:
 (A)'/t'  (B) '/017' (C) '/n' (D)'/0xaa'

3.不能正確表示數學運算式a*b/(c*d)的C語言運算式是:(註:以“*”代替小圓點)
 (A) a*b/c*d (B) a/(c*d)*b (C) a*b/c/d (D)a*b/(c*d)

4.下列標識符中,不能作為使用者自訂標識符的是:
  (A)ab_2   (B) if  (C) _123 (D)a_3

5.組成C語言程式的是:
 (A) 子程式 (B) 過程 (C) 函數 (D)主程式和子程式

6.以下各標識符中,合法的使用者識別碼為:
 (A)p#a   (B)a10  (C) void (D) 10a

7.以下資料中,不正確的數值是:
 (A) 0.0  (B) 5L  (C) 3e3.5 (D) 986

8.以下資料中,不正確的字元常量是:
 (A) "c"  (B) '/n' (C) '/041' (D) 'c'

9.以下整數中,不正確的八進位或十六進位數是:
 (A) 0x16 (B) 016  (C) -16  (D) 0xaaaa

10.已知各變數的類型定義如下:
 int i=8,k,a,b;
 unsigned long w=5;
 double x=1.42,y=5.2;
 則以下選項中,不符合C語言文法的運算式是:
 (A) k=i++; (B) (int)x+0.4 (C)y+=x++;  (D)a=2*a=3

11.以下選項中,不符合C語言文法的指派陳述式是:
 (A) a=1,b=2 (B) ++i; (C) a=b=5;  (D) y=(a=3,6*5);

12.以下選項中,合法的C語言關鍵字是:
 (A) integer (B) Char (C) int   (D) real

13.以下不正確的敘述是:
 (A) 在C程式中所用的變數必須先定義後使用
 (B) 在C程式中,APH和aph是兩個不同的變數
 (C) 若a和b類型相同,在執行了指派陳述式a=b;後,b中的值將放入a中,
     b中的值不變
 (D) 當輸入數值資料時,對於整型變數只能輸入整型值;對於實型變數只
     能輸入實型值

14.已知字元a的ASCII碼為十進位的97,下面程式的輸出是:
 main()
 {
  char c1,c2;
  c1='a'+'6'-'2';
  c2='a'+'6'-'3';
  printf("%c,%d/n",c2,c1);
 }
 (A) 輸出無定值 (B) d,100 (C)d,c  (D)d,101

15.在C語言中,為了結束由while語句構成的迴圈,while後一對圓括弧中
 運算式的值應該為:
 (A) 0 (B) 1 (C) true (D) 非0

16.在C語言中,為了結束由do-while語句構成的迴圈,while後一對
 圓括弧中運算式的值應該為:
 (A) 0 (B) 1 (C) false (D) 非0

17.在C語言中,if語句後的一對圓括弧中,用以決定分支的流程的運算式是:
 (A) 只能用邏輯運算式   (B) 只能用關聯運算式
 (C) 只能用邏輯運算式或關聯運算式 (D) 可用任意運算式

18.在以下運算子中,優先順序別最高的運算子是:
 (A) <=  (B) /  (C) !=  (D) &&

19.在以下運算子中,優先順序別最高的運算子是:
 (A) !  (B) =  (C) +  (D) ||

20.在以下給出的運算式中,與do…while(E)語句中的(E)不等價的運算式是:
 (A) (!E==0) (B) (E>0||E<0) (C) (E==0) (D) (E!=0)

21.在C語言中,switch語句後一對圓括弧中運算式的類型:
 (A) 可以是任何類型  (B) 只能為int類型
 (C) 可以是整型或字元型  (D) 只能是整型或實型

22.C語言來源程式的副檔名為:
 (A) .c  (B) .bat (C) .exe (D) .lib

23.下面運算式中不能滿足:當x的值為偶數時其值為真,為奇數時其值為假的是:
 (A) x%2==0 (B) !x%2!=0 (C) (x/2*2-x)==0 (D) !(x%2)

24.在C語言中,能代表邏輯值“真”的是:
 (A) true (B) 大於0的數 (C)非0整數 (D) 非0的數

25.設a、b和c都是int型變數,且a=3,b=4,c=5,則以下運算式中,
 值為0的運算式是:
 (A) 'a'&&'b'  (B) a<=b
 (C) a||b+c&&b-c  (D) !((a<b)&&!c||1)

26.若x和y都是int型變數,x=100,y=200,且有下面的程式片段:
 printf("%d",(x,y));
 上面程式片段的輸出結果是:
 (A) 200  (B) 100  
 (C) 100 200  (D) 輸出格式符不夠,輸出不確定的值

27.若k是int型變數,且有下面的程式片段:
 k=-3;
 if(k<=0)printf("####");
 else printf("&&&&");
 上面程式片段的輸出結果是:
 (A) ####  (B) &&&&
 (C) ####&&&&  (D) 有語法錯誤,無輸出結果

28.在C語言中,要求運算數必須是整型的運算子是:
 (A) % (B) / (C) < (D)!

29.下面程式的輸出是:
 (A) 0 (B) 1 (C) 3 (D) 不確定的值
 main()
 {
  int x=10,y=3;
  printf("%d/n",y=x/y);
 }

30.執行下面程式中輸出語句後,a的值是:
 (A) 65  (B) 20  (C) 15  (D) 10
 main()
 {
  int a;
  printf("%d/n",(a=3*5,a*4,a+5));
 }

31.下面程式的輸出是
 (A) 0 0 3  (B) 0 1 2
 (C) 1 0 3  (D) 1 1 2
 main()
 {
  int a=-1,b=4,k;
  k=(a++<=0)&&(!(b--<=0));
  printf("%d %d %d/n",k,a,b);
 }

32.下面的程式片段所表示的數學函數關係是
 (A)    -1(x<0)  (B)    1(x<0)
     y= 0(x=0)   y=-1(x=0)
  1(x=0)       0(x>0) 
 
 (C)     0(x<0)  (D)   -1(x<0) 
     y= -1(x=0)   y= 1(x=0)
  1(x>0)      0(x>0) 
 y=-1;
 if(x!=0)
 if(x>0) y=1;
 else y=0;

33.下面程式的輸出是:
 (A) 741  (B) 852  (C) 963  (D) 875421
 main()
 { int y=9;
  for(;y>0;y--)
  {
   if(y%3==0)
   {printf("%d",--y);continue;} 
  }
 }

34.C語言中最簡單的資料類型包括:
 (A) 整型、實型、邏輯型  (B) 整型、實型、字元型
 (C) 整型、實型、邏輯型  (D) 整型、實型、邏輯型、字元型

35.為表示關係x≥y≥z,應使用C語言運算式:
 (A) (x>=y)&&(y>=z)  (B) (x>=y)AND(y>=z)
 (C) (x>=y>=z)   (D) (x>=y)&(y>=z)

36.以下程式的輸出結果是:
 main()
 {
  int x=10,y=10;
  printf("%d %d/n",x--,--y);
 }
 (A) 10 10   (B) 9 9   (C) 9 10  (D) 10 9

37.以下程式段的輸出結果是:
 int x=3;
 do
 {
  printf("%3d",x-=2);
 }
 while(!(--x));
 
 (A) 1   (B) 3 0   (C) 1 -2  (D) 死迴圈

38.若k為整型,則while迴圈
 k=0;
 while(k=0)k=k-1;
 (A) 執行1次   (B) 無限迴圈 
 (C) 一次也不執行 (D) 執行2次

39.兩次運行下面的程式,如果從鍵盤上分別輸入6和4,則輸出結果是
 main()
 {
  int x;
  scanf("%d",&x);
  if(x++>5)printf("%d/n",x);
  else printf("%d/n",x--);
 }
 (A) 7和5  (B)6和3   (C)7和4   (D) 6和4

40.能正確表示a≥10或a≤0的關聯運算式是
 (A) a>=10 or a<=0  (B) a>=10 | a<=0  
 (C) a>=10 || a<=0  (D) a>=10 && a<=0  
 (註:原題選項c、d相同,本題稍作修改)
 
二、寫出程式或程式段的運行結果。(每題4分,共20分)
1. main()
 {
  int num=0;
  while(num<=2)
  {
   num++;
   printf("%d/n",num);
  }
 }
 上面程式的輸出結果是_______________。

2. main()
 {
  float x,y;
  scanf("%f",&x);
  if(x<0.0)y=0.0;
  else if((x<5.0)&&(x!=2.0))
    y=1.0/(x+2.0);
   else if(x<10.0) y=1.0/x;
    else y=10.0;
  printf("%f/n",y);
 }
 若運行時從鍵盤鍵入2.0,則上面程式的輸出結果為_______________。

3. main()
 { int x=1,y=0,a=0,b=0;
  switch(x)
  {
   case 1:
    switch(y)
    {
    case 0:a++;break;
    case 1:b++;break;
    }
   case 2:
    a++;b++;break;
  }
  printf("a=%d,b=%d/n",a,b);
 }
 上面程式的輸出結果是______________________________。

4. main()
 { int a,b;
  for(a=1,b=1;a<=100;a++)  
  {
   if(b>=20) break;
   if(b%3==1)
   {
    b+=3;continue;
   }
   b-=5;
  }
  printf("%d/n",a)
 }
 上面程式的輸出結果是______________________________。

5. main()
 {
  int a=-1;b=4;k;
  k=(++a<0)&&!(b--<=0);
  printf("%d %d %d /n",k,a,b);
 }
 上面程式的輸出結果是______________________________。

三填空題(1~10空,每空1分;11~20空,每空2分,共30分)
1. 設C語言中,int型資料佔2個位元組,則long型資料占(1)_____個位元組,
 short型資料占(2)_______個位元組, float型資料占(3)______個位元組,
 double型資料占(4)_______個位元組,char型資料占(5)_______個位元組。

2. 設有如下定義:
  int a=12; 分別寫出下面運算式運算後a的值:
 a. a+=a  則a的值為(6)_________________。
 b. a+=a-=a*=a 則a的值為(7)_________________。

3. 設有一字串"ab/ncd/x12",則該字串的長度為(8)___________。

4. 將下列運算式改寫成C語言中合法的運算式:
 a.b*b-4ac    改寫成(9)_________________。
 b.(1/2)(ax-(a+x)/4a) 改寫成(10)________________。
5. 以下程式的功能是:從鍵盤上輸入若干個學生的成績,統計並輸出最高成績
 和最低成績,
 當輸入負數時結束輸入,請填空。
 main()
 {
  float x,amax,amin;
  scanf("%f",&x);
  amax=x;
  amin=x;
  while((11)__________)
  {
   if(x>amax)amax=x;
   if((12)__________)amin=x;
   (13)__________
  }  printf("/namax=%f/namin=%f/n",amax,amin);
 }
 
6. 以下程式段要求從鍵盤輸入字元,輸入字母為Y時,停止迴圈。請填空。
 ch='/0';
 while (14)__________ch=getchar();

7. π的近似值可用下面公式求得:
 π×π/6 ≈1/(1×1)+1/(2×2)+1/(3×3)+……+1/(n×n)
 若n取值10000,則最後一項的值約為1/10000,認為可達到精度要求。
 用下面的程式求π的近似值,請填空。
 #include <stdio.h>
 #include <math.h>
 main()
 {
  long i;
  (15)__________pi;
  pi=0.0;
  for(i=1;i<=10000;i++)
   pi+=(16)__________;
  pi=sqrt(6.0*pi);  /*sqrt():求平方根函數*/
  printf("pi=%f/n",pi);
 }

8. 費伯納西數列中的頭兩個數是0和1,從第3個數開始,每個數字
 等於前兩個數的和,即:
 0,1,1,2,3,5,8,13,21,……
 求費伯納西數列的前20個數。要求每行輸出5個數。請填空。
 #include <stdio.h>
 main()
 {
  int f,f1,f2;
  printf("Fibonacci series:/n");
  f1=0;f2=1;
  printf("%6d%6d",f1,f2);
  for(i=3;i<=20;(17)__________)
  {
   f=(18)__________;
printf("%6d",f);
   if((19)__________)printf("/n");
   f1=f2;f2=(20)__________;
  }
  printf("/n");
 }

附參考答案:
一、單項選擇。
01~10 A D A B C  B C A C D
11~20 A C D D A  A D B A C
21~30 C A B D D  A A A C C
31~40 C C B B A  D C C A C

二、寫出程式或程式段的運行結果。
1. 1  2  3
2. 0.5
3. a=2,b=1
4. 8
5. 0 0 4

三、填空題。
1.  (1)~(5) 4  2  4  8  1
2. (6) 24 
 (7) 0
3. (8) 7
4. (9)  b*b-4*a*c
 (10) (a*x+(a+x)/(4*a))/2
5. (11) x>=0
 (12) x<amin
 (13) scanf("%f",&x);
6. (14) (ch!='Y') 
7. (15) float或double 
 (16) 1.0/(i*i)
8. (17) i++
 (18) f1+f2
 (19) i%5==0
 (20) f
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.