C語言常見易錯題集(分析及解答)(僅可用於交流,勿用於商業用途)


  


 

1.能正確表示a和b同時為正或同時為負的邏輯表達式是( D  )。

      A.(a>=0||b>=0)&&(a<0||b<0)             B.(a>=0&&b>=0)&&(a<0&&b<0)

      C.(a+b>0)&&(a+b<=0)                       D.a*b>0

解析:0是非正非負數


 

2.在C語言中,if語句后的一對圓括號中,用以決定分支流程的表達式( D )。

      A.只能用邏輯表達式                        B.只能用邏輯表達式或關系表達式

      C.只能用關系表達式                        D.可用任意表達式


 

3.有如下程序段

      float x=2.0,y;

      if(x<0.0) y=0.0;

      else if(x<5.0)y=1.0/x;

      else y=1.0;

      printf("%f\n",y);

該程序段的輸出結果是( C  )。

      A.0.000000                                         B.0.250000

      C.0.500000                                         D.1.000000

解釋:y是float類型,且除數是浮點數形式


4.求解以下值:

  (1)0&&1||0  (2)0&&1||1  (3)1&&0||0&&1||1  (4)1||1&&0

解釋(1):等價於((0&&1)||0)==》0||0==》0

解釋(2):等價於((0&&1)||1)==》0||1==》1

解釋(3):等價於((((1&&0)||0)&&1)||1)==》(((0||0)&&1)||1)==》((0&&1)||1)==》(0||1)==》1

解釋(4):等價於(1||(1&&0))==》(1||0)==》1

總結:&&優先級大於||;&&於||結合性為做到右


 

6.若int k, m = 1; 則 k = -m--;語句后,k的值為多少?

解析:優先級相同時,由結合性判斷。負號與自減優先級相同,且它們的結合性為右到左,因此k = -m-- 等價於k = -(m--),由於自減在變量右側,因此得到 k = -m = -1


 

7.若函數的形參為一維數組,則形參數組可以不指定大小

8.在函數的說明和定義時若沒有指出函數的類型,則系統自動地認為函數的類型為整型

9.函數可以返回一個值,也可以什么值也不返回。

10.若調用一個函數,且此函數中沒有 return 語句,則該函數返回一個不確定的值。

11.若使用一維數組名作函數參數,則在被調函數中,不需要考慮形參數組的大小

12.在 C 語言中,形參的缺省存儲類是auto

13.C 語言中,函數的隱含存儲類別是extern

14.若有定義語句:char s[10]="1234567\0\0";,則 strlen(s)的值是7

15.以下關於 return 語句的敘述中正確的是:C

      A.一個自定義函數中必須有一條 return 語句
      B. 一個自定義函數中可以根據不同情況設置多條 return 語句
      C. 定義成 void類型的函數中可以有帶返回值的 return 語句
      D.沒有 return 語句的自定義函數在執行結束時不能返回到調用處
16.在宏定義#define PI 3.14159 中,用宏名 PI 代替一個字符串

  解析:對宏的具體定義是: #define 標識符 字符串

     宏替換只是字符替換。

17.C 語言字符數組可以存放字符串。

18.若函數有返回值,必須通過 return 語句返回。

19.C 語言中唯一一個不能被別的函數調用的函數是main函數。

20.在 C語言中,一個函數一般由兩個部分組成【函數首部】、【函數體】

21.C語言中,關鍵字及編譯預處理命令小寫字母書寫。

22.由float x=3e-6,y=3e-6;不能得到x==y的邏輯值為真。

23.僅僅對存放字符串的數組才可以一次引用整個數組,其余均不能一次引用整個數組。

24.對於數值型的數組來說,不可以一次引用整個數組。

25.C語言中,函數間數據傳遞的方式有三種,即用返回值、參數、全局變量

26.將整數值賦給枚舉變量時需要作強制類型轉換。

  解析:

            enum season {spring,summer,autumn,winter}s1,s2;
            s1=summer;
            s2=(enum season)2;
            printf("s1=%d,s2=%d\n",s1,s2);

 

27.枚舉類型不是一種基本的數據類型

  解析:C語言數據類型分類:

  • 基本類型
    • 標准整數類型,以及擴充的整數類型
    • 實數浮點類型,以及復數浮點類型
  • 枚舉類型
  • void類型
  • 派生類型
    • 指針類型
    • 數組類型
    • 結構類型
  • 聯合類型
  • 函數類型

28.自增自減:(有爭議題)

  int a = 99;

   //(a++)--;  //報錯

   //++(a--);  //報錯

  //--a--;    //報錯

  //++a--;    //報錯

        (++a)--;  

   --(++b);

  --++b;

29.fclose()用來關閉先前fopen()打開的文件,如果成功關閉,fclose()函數返回0,否則返回EOF。

30.表達式 c=fgetc(fp)!=EOF的功能是從fp指向的文件中讀取字符,並判斷文件是否結束。

31.在c語言中將文件視為無結構的字節流。

32.字符常量的長度肯定為1。

33.解釋double x;x=218.82631;printf("%-6.2e\n",x);的輸出格式

  解析:

    6-->代表域寬,共6位,負號、小數點、0都占一位寬(可見的都占一位)

    .2-->代表小數點后位數

    e-->代表用e表示法(按科學計數法顯示)

    -代表向左對齊

  精華:%-m.nf(小數精度輸出只能用於printf,不能用於scanf)

    -代表向左對齊,無負號則代表向右邊對齊(前面補空格)

    .n-->代表小數點后位數

    m-->先判斷m與小數位的大小,m起碼要大於(1+1+n+1+1+d)才能起到作用,其中d取決於編譯器。其作用不是截斷輸出

    e-->代表用e表示法(按科學計數法顯示)

 34.枚舉類型聲明/定義及使用:

  enum 枚舉類型 {枚舉值列表};  //定義 

    正確:enum week {Su, Mo, Tu, We, Th, Fr, Sa};

    錯誤:enum week={Su, Mo, Tu, We, Th, Fr, Sa};

       錯誤:enum week {“Su”, “Mo”, “Tu”, We, Th, Fr, Sa};

  //使用:

    enum week  a,b,c;  

  a = We;

  b = Fr;

  printf("%d",a);

 


 

35.以下數值中,不正確的八進制數或十六進制數是(C).

  A:0x16

  B:16

  C:-16

  D:0xaaaa

解析:八進制和十六進制數前面是不可帶負號(原始數值是十進制,以10進制為運算基准)

  因為十進制數是負數時,如-16、-99其二進制負號位為1 ,則將二進制轉換為八進制或十六進制時負號位參與數值運算,因此算出的八進制或十六進制不含負號位。

  (注:一般來說,負號是人為規定地加在十進制數上,其他進制無負號概念,因為負號在二進制最前位體現,且參與進制轉換)


 

36.以下只有在使用時才為該類型變量分配內存的存儲類說明是(B)。

  A:auto 和 static

  B:auto 和 register

  C:register 和 static

  D:extern 和 register

 解析:在用靜態static與外部extern定義變量時,系統立刻給其分配內存,而定義自動類auto與強制放入寄存器register類型變量時,只有當使用時才分配內存。

 37.下列表達式中,可作為C 合法表達式的是(B)。

  A:[3,2,1,0]

  B:(3,2,1,0)

  C:3=2=1=0

  D:3/2/1/0

 解析:

  (3,2,1,0)是逗號表達式

  3/2/1/0 將提示:被零除或對零求模

 


 

38. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM