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.