一、選擇題(每小題1分,共40分)
(1)計算機能直接執(zhí)行的程序是( )。
A.源程序
B.目標程序
C.匯編程序
D.可執(zhí)行程序
(2)以下敘述中正確的是( )。
A.c語言規(guī)定必須用main作為主函數名,程序將從此開始執(zhí)行
B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執(zhí)行
C.c語言程序將從源程序中第一個函數開始執(zhí)行、
D.main的各種大小寫拼寫形式都可以作為主函數名,如MAIN,Main等
(3)以下選項中可用做c程序合法實數的是( )。
A.3.0e0.2
B..1e0
C.E9
D.9.12E
(4)下列定義變量的語句中錯誤的是( )。
A.int jnt;
B.double int_;
C.char For;
D.float US$;
(5)表達式:(im)((double)9/2)一9%2的值是( )。
A.0
B.3
C.4
D.5
(6)設變量均已正確定義,若要通過
scaIIf(”%d%c%d%c”,&al,&el,&a2,&c2);
語句為變量al和a2賦數值l0和20,為變量cl和c2賦字符x和Y。以下所示的輸入形式中正確的是( )。(注:口代表空格字符)
(7)以下選項中不能作為c語言合法常量的是( )。.
A.0.1e+6
B.’cd’.
C.”、a”
D.’\011
(8)if語句的基本形式是:if(表達式)語句,以下關于“表=迭式”值的敘述中正確的是( )。
A.必須是邏輯值
B.必須是整數值
C.必須是正數
D.可以是任意合法的數值
(9)有如下嵌套的if語句:
以下選項中與上述if語句等價的語句是( )。
k=(a
B.B.:((b>C.?b:
c.;B.k=(a
D.k=(a
(10)有以下程序:
程序執(zhí)行后的輸出結果是( )。
A.1
B.2
C.4
D.死循環(huán)
(11)有以下程序:
程序運行后的輸出結果是( )。
A.Afternoon
B.ftemoon
C.Morning
D.oming
(12)有以下程序,程序中庫函數islower(ch)用以判斷ch中的字母是否為小寫字母:
程序運行后的輸出結果是( )。
A.ab cd EFg!
B.Ab Cd EFg!
C.ab cd EFG!
D.aB cD EFG!
(13)有以下程序:
程序運行后的輸出結果是( )。
A.0
B.9
C.6
D.8
(14)有以下程序:
程序執(zhí)行后的輸出結果是( )。
A.55.
B.50
C.45
D.60
(15)有以下結構體說明、變量定義和賦值語句:
則以下scanf函數調用語句有錯誤的是( )。
scanf(”%s”,s[0].name);
B.scanf(”%d”,&s[0].age);
C.scanf(”%c”,&(ps一>sex));
D.scanf(”%d”,ps一>age):
(16)若有以下語句:typedef struct S{int 9;char h;}T;以下敘述中正確的是( )。
A.可用s定義結構體變量
B.可用T定義結構體變量
C.S是struct類型的變量
D.T是struct S類型的變量
程序運行后的輸出結果是( )。
A.1002,ZhangDa,1202.0
B.1002,ChangRon9。1202.0
C.1001,ChangRon9,1098.0
D.1001,ZhangDa,1098.0
(18)設有宏定義:
#define IsDIV(k,n)((k%1"1==1)?1:O)且變量m已正確定義并賦值,則宏調用:
IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是( )。
判斷m是否能被5和7整除
B.判斷m被5和7整除是否都余l(xiāng)
C.判斷m被5或者7整除是否余1
D.判斷m是否能被5或者7整除
(19)有以下程序:
程序運行后的輸出結果是( )。
A.3
B.1
C.2
D.0
(20)有以下程序:
程序運行后的輸出結果是( )。
A.1 2
B.1 4
C.123 4
D.123 456
一、選擇題
(1)D【解析】計算機能直接執(zhí)行的程序是二進制的可執(zhí)行程序,擴展名為.exe。所以選擇D選項。
(2)A【解析】C語言中的主函數只能是main()函數,不能任意指定,所以B選項錯誤。C語言從主函數main()開始,到主函數main()結束,所以C選項錯誤。主函數必須寫成小寫的main,不能混淆大小寫,所以D選項錯誤。
(3)B【解析】A選項中e后面的指數必須為整數,所以錯誤。C語言規(guī)定,E之前必須要有數字,所以c選項錯誤。E后面必須要有數字,且必須為整數,所以D選項錯誤。
(4)D【解析】C語言規(guī)定,變量命名必須符合標識符的命名規(guī)則。D選項中包含了非法字符“$”,所以錯誤。標識符由字母、數字或下劃線組成,且第一個字符必須是大小寫英文字母或者下劃線,而不能是數字。大寫字符與小寫字符被認為是兩個不同的字符,所以For不是關鍵字for。
(5)B【解析】先將整型數據9強制轉換成doub1e型,然后除以2得到的結果與doub1e型保持一致,即為4.5,然后將4.5強制轉換成整型數據4,然后計算9%2的值為1,最后計算4一1的值為3,所以選擇B選項。
(6)C【解析】輸入數據的格式必須與scanf()的格式控制串完全匹配,如果A、B、c選項中在數字10后面均輸入了空格,則會將空格賦給變量c1,而不是把x賦給c1,所以選擇C選項。
(7)B【解析】要想表示字符串常量應該用雙引號表示,即“cd”,單引號用于表示字符常量,所以B選項中的表示方法錯誤。
(8)D【解析】if語句中的表達式可以是任意合法的數值,如常量、變量表達式。所以D選項正確。
(9)B【解析】題目中嵌套語句的含義是當a&1t;b且a&1t;c成立,則將a的值賦給k。如果a&1t;b成立而a&1t;c不成立將e的值賦給k。如果a&1t;b不成立而b&1t;c成立,將b的值賦給k。如果如果a&1t;b不成立且b&1t;c也不成立,將c的值賦給k。判斷條件表達式只有B選項可以表示這個含義。
(10)A【解析】一一k先自減再使用,所以第一次判斷條件即為whi1e(4),條件為真,執(zhí)行打印k的值k=4—3,結果為1;第二次判斷條件即為whi1e(0),條件為假,結束循環(huán),打印回車換行符。所以選擇A選項。
(11)A【解析】本題主函數中定義了一個指針數組a,可以將它看成一個以字符指針為元素的一維數組。和一般的一維數組名能賦給同類型指針變量一樣,該字符指針數組也可以賦給指向字符指針的指針,所以數組名a可以用做函數fun()的實參。在fun()函數中,++P操作使形參P往后移動一個字符指針的位置,即指針a[1]的位置。故最后通過礎nd()函數輸出的字符串為“Afternoon”。因此A選項正確。
(12)D【解析】調用缸函數后,實參數組名s1傳給形參指針P,P也指向數組s1。m函數的功能是遍歷字符數組中的所有字符,如果某一個字符是空格并且前一個字符是小寫字母的話,就把前一個字符轉換為大寫。程序中語句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是將P[i一1]中的字符轉換為大寫。因此D選項正確。
(13)C【解析】主函數中調用f函數,同時將數值3傳遞給變量x,執(zhí)行條件不滿足條件if(x==0I1X==1);跳過re—turn(3);,直接執(zhí)行語句Y=X}X—f(x一2);這里f(x一2)為函數的遞歸調用,再次訶用f函數,此時x=1,判斷條件成立,返回3給f(1),Y=3}3—3=6,最后將6返回主函數,并進行輸出。因此c選項正確。
(14)D【解析】內部靜態(tài)變量是始終存在的,當函數被調用退出后,內部靜態(tài)變量會保存數據,再次調用該函數時,以前調用時的數值仍然保留著。m(a,5)的值是15,再次調用后Ⅲm=15,所以fun(b,4)=45,s=45+15=60。因此D選項正確。
(15)D【解析】本題考查結構體的相關知識,題目中需要輸入一個變量,scanf要求參數為指針,而D選項中ps一>age為一個變量,不是指針,所以錯誤。
(16)B【解析】本題考查typ1edef重新聲明一種結構體類型,那么T為結構體類型,而不是結構體變量,所以B選項正確。
(17)B【解析】本題考查結構體變量的引用以及作為函數參數,題目雖然看似復雜,其實比較容易,f函數的參數是結構體變量,然后對參數重新賦值并返回,所以該題目的答案為B選項。
(18)B【解析1本題考查邏輯運算符的相關概念,邏輯與若要為真,那么兩邊都要為真,即m都能被5和7整除都余1,所以選項B正確。
(19)A【解析】本愿考查位運算符以及相關運算,‘為按位或,&為按位與,部么a'b為3,再與c按位與仍然為3,所以答案為A選項。
(20)D【解析】fprintf()函數向文本文件輸出數據,將輸出的內容按格式輸出翻硬盤的文本文件中。執(zhí)行兩次fprintf后。文件中的內容為。123 456”,所以D選項正確。