2015年計算機二級《C語言》最新章節練習題(2)
16有以下程序
程序的運行結果是
A.DB.CC.BD.A
參考答案:A
參考解析:首先判斷x>1由于x=1不大于1,不進入該if語句,程序跳入else語句判定zx。條件不成立,因此輸出字母D,答案為A選項。
17以下關于C語言函數參數傳遞方式的敘述正確的是
A.數據只能從實參單向傳遞給形參
B.數據可以在實參和形參之間雙向傳遞
C.數據只能從形參單向傳遞給實參
D.C語言的函數參數既可以從實參單向傳遞給形參,也可以在實參和形參之間雙向傳遞,可視情況選擇使用
參考答案:A
參考解析:數據只能由實參單向傳遞給形參稱為“值傳遞”,而不能由形參傳回來給實參,A選項正確;數組名、指針等作參數,實參傳遞給形參的是地址值,這樣形參和實參就指向同一段內存單元,在函數體內對形參數據的改變也將影響到實參。實參和形參之間不可雙向傳遞。B、D選項錯誤。數據不能從形參傳遞給實參,C選項錯誤。
18以下fun函數的功能是將形參s所指字符串內容顛倒過來
在橫線處應填同入的內容是
A.+1B.-1C.+0D.k=0
參考答案:B
參考解析:本題考查字符串處理函數strlen,strlen計算一個字符串的長度,包含結尾符,所以本題中j的初始化應該是從最后一個字符開始,所以應該將得到的字符串長度減1,選項B正確。
19若有以下程序
則程序的輸出結果是
A.China!B.to China!C.me you to China!D.you to China!
參考答案:D
參考解析:該程序首先定義*a和b[],并進行初始化。主函數中通過外層for循環語句,遍歷字符數組b[],并且將符合if條件語句的字符賦給數組p;for內層循環語句,遍歷字符數組a[]。再將符合if條件語句的結果輸出。因此D選項正確。
20若有以下程序
則程序的輸出結果是
A.Hay!B.HowareyouC.Howareyou!D.How are you!
參考答案:C
參考解析:主函數中首先定義字符數組a[]="How areyou! ";執行for循環語句,語句if(a[i]!= ")a[j++]=a[i];其功能是將字符數組中的空格去掉。因此C選項正確。
21若有以下程序
則程序的輸出結果是
A.4,5,6,7,
B.4,7,10,13,
C.4,6,8,10,
D.3,5,7,9,
參考答案:C
參考解析:主函數中變量k作為for語句的循環變量,取值0、1、2、3,同時也作為實參通過調用函數f傳遞給形參變量m。南于變量a是全局變量,變量n是static靜態變量,因此k=0時,f函數中,語句return n+m+a;即l+0+3=4;k=1時,f函數中,語句retum n+m+8;即2+1+3=6;k;2時,f函數中,語句returnn+m+a;即3+2+3=8;k=3時,f函數中,語句return n+m+a;即4+3+3=10。因此C選項正確。
22若有以下程序
執行時若輸入:(其中表示回車符)
Fig flower is red.
則輸出結果是
A.wet is red.Fig Co is blue.
B.wet is red.Fig flo
C.wet is red.The sky is blue.
D.Fig flower is red.The sky is blue.
參考答案:A
參考解析:程序首先初始化字符數組b[],執行for循環語句。循環變量i的取值范圍從0到6。在for循環語句中通過scanf函數將從鍵盤上輸入的數據輸入到b[]中,即b的值為Fig Co is blue.。退出for循環語句,執行語句gets(A.;,gets()函數的調用形式為:gets(str_adr),其中str_adr是存放輸入字符串的起始地址,可以是字符數組名。字符數組元素的地址或字符指針變量。gets函數用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止,即a的值為wflr is red.。因此A選項正確。
23以下敘述中正確的是
A.數組下標的下限是1
B.數組下標的下限由數組中第一個非零元素的位置決定
C.數組下標的下限由數組中第一個被賦值元素的位置決定
D.char el,c2,*c3,c4[40];是合法的變量定義語句
參考答案:D
參考解析:
數組下標的下限是0。因此D選項正確。
24對于while(!E)s;,若要執行循環體s,則E的取值應為:
A.E等于1B.E不等于0C.E不等于1D.E等于0
參考答案:D
參考解析:while語句的一般形式為:while(表達式)語句;其中表達式是循環條件,語句為循環體。while語句的語義是:計算表達式的值,當值為真(非0)時,執行循環體語句。該題中如要執行語句s,則!E應為真,因此E應等于0,D選項正確。
25以下敘述中正確的是
A.局部變量不能被說明為static
B.只有全局變量才有自己的作用域,函數中的局部變量沒有作用域
C.只有在函數內部定義的變量才是局部變量
D.只要是用戶定義的標識符,都有一個有效的作用域
參考答案:D
參考解析:本題考查局部變量和全局變量作用域,B選項中局部變量也有作用域,C選項中,函數內部定義的也可能是全局變量,A選項錯誤,因為可以定義個靜態局部變量。
26有以下程序
程序的輸出結果是
A.693825B.69825C.63825D.6385
參考答案:D
參考解析:本題的意圖在于將C中兩個字符串的偶數位置的數字組成一個新數,找到的四個數字分別為6、3、8、5,組成的數為6385,所以答案為D選項。
27有如下程序段
則循環結束后i的值為
A.6B.5C.9D.10
參考答案:A
我的答案:D
參考解析:if(i>5)break;表示判斷i值,如果i大于5,執行break語句,結束循環程序,這里當i=6,循環結束。因此答案為A選項。第27題 筆記記錄我的筆記(0) | 精選筆記(1)選擇筆記標簽:試題內容(1)答案解析(0)
28以下敘述中正確的是
A.只能在循環體內和switch語句體內使用break語句
B.當break出現在循環體中的switch語句體內時,其作用是跳出該switch語句體,并中止循環體的執行
C.continue語句的作用是:在執行完本次循環體中剩余語句后,中止循環
D.在while語句和do-while語句中無法使用continue語句
參考答案:A
參考解析:break語句通常用在循環語句和開關語句中。
當break用于開關語句switch中時,可使程序跳出switch而執行switch以后的語句;當break語句用于do…while、for、while循環語句中時,可使程序終止循環而執行循環后面的語句,即滿足條件時便跳出循環。continue語句的作用是跳過循環體中剩余的語句而強行執行下一次循環。B選項中break只跳出該switch語句,并不能終止循環,因此B錯。C選項continue語句結束本次循環,至于大循環的終止與否與其無關,因此C錯。D項中while和do…while語句都可以使用,continue語句跳出本次循環,因此D錯誤。因此A進項正確。
29有以下程序
程序運行后的輸出結果是
A.2 6B.2 3C.4 3D.4 6
參考答案:B
參考解析:本題主要考查指針與數組。觀察題目,可以發現,*P=&aa[0][0]語句實際是將數組”的首地址賦給了指針變量P。將i的值帶入for循環中,i=0時,aa[0][1]=3,*P=2;*P輸出的是指針所指向的數組值,此時P所指向的是aa[O][0],輸出2,而i=1時執行了++P操作使指針向后移動指向了aa[0][1],所以在輸出*P時應為3。因此B選項正確。
30以下敘述中正確的是
A.if語句只能嵌套一層
B.if子句和else子句中可以是任意的合法的c語句
C.不能在else子句中再嵌套if語句
D.改變if-else語句的縮進格式,會改變程序的執行流程
參考答案:B
參考解析:A選項中,if語句的嵌套沒有規定層數;C選項中,可以在else予句中再嵌套if語句;D選項中,改變if—else語句的縮進格式,不會改變程序的執行流程,需要注意if和else的配對問題。因此B選項正確。