程式設計入門-C語言基礎知識-翁愷-期中測試

來源:互聯網
上載者:User

標籤:表格   main   類比   運行   nbsp   c語言   scan   多個   子集   

一、試題

程式設計入門—C 語言
期中測評
1 在代碼:
while ( !e )
中,!e 等價於:
A.e ==0 B. e != 1 C. e!=0 D. e == 1
2. 以下程式碼片段的輸出是:
int j=4;
for ( int i=j; i<=2*j; i++ ) {
switch ( i/j ) {
case 0:
case 1: printf(“*”); break;
case 2: printf(“#”);
}
}
A.****## B. ***# C. *# D. ****# E. ****
3. 下列可用於 C 語言程式標識符的一組是(名字間以逗號分隔):(多選)
A.For, _abc, IF B. _if, _123, file C. void, d, WORD
D. For, -abc, IF E. 2_a, xyz, b1_s
4. 對於以下代碼:
int i,j=6;
以下哪句話是對的?
A.i 和 j 的初始值都是 6 B. i 被初始為 0,而 j 是 6
C. i 不會被初始化,而 j 是 6 D. 不能通過編譯
5. 對於以下代碼:
int i;
scanf("%d", &i);
i %= 4
執行後,i 會有幾種可能性?
A.7 B. 4 C. 3 D. 2 E.1 F.0
6. 對於以下代碼:
int i=6;
if ( i<= 6 )
printf("hello\n");;
else
printf("bye-bye\n");;
哪句話是對的?(多選)
A. 列印出"hello" B. 無法編譯 C. 列印出"bye-bye"
D. 不能通過編譯 E. 列印出"hello bye-bye"
7. 對於以下代碼:
int i=6;
do {
printf("%d", i--);
} while (0);
哪句話是對的?
A. 列印出 5 B. 因為 while(0),無法編譯
C. 列印出 6 D. 列印不出東西
8. 對於以下代碼:
int i;
for ( i=0; i<10;i++)
printf("%d", i);
for 迴圈後,i 的值是多少?
A.11 B. 9 C. 10 D. 不確定
9. 下列程式段輸出結果為:
int x=1, y=12;
printf(“%d”,y*x++);
A.20 B. 10
C. 24 D. 12
10. 對
for(運算式 1;;運算式 3)
可理解為
A. for(運算式 1;運算式 1;運算式 3) B. for(運算式 1;1;運算式 3)
C. for(運算式 1; 運算式 3;運算式 3) D. for(運算式 1;0;運算式 3)
11. 以下運算式
x&&1
用在 if 的條件中時,和哪個是等價的(多選)
A.x==0 B. x==1 C. x!=0 D. x!=1 E. x

 

二、分析及答案

 

程式設計入門—C 語言期中測評1 在代碼:while ( !e )中,!e 等價於:A.e ==0 B. e != 1 C. e!=0 D. e == 1 * 只有當e的邏輯為false時這個運算式才成立,!false=true  * 而對於整數e而言,任何非0的整數值都是邏輯的true,換句話說只有整數0才代表邏輯false,因此!e換一個寫法既是e == 0因此選 A 2. 以下程式碼片段的輸出是:int j=4;for ( int i=j; i<=2*j; i++ ) {switch ( i/j ) {case 0:case 1: printf(“*”); break;case 2: printf(“#”);}}A.****## B. ***# C. *# D. ****# E. **** 表格類比:j     i    迴圈條件   i/j       輸出4    4    4<=8    1    *4    5    5<=8    1    *4    6    6<=8    1    *4    7    7<=8    1    *4    8    8<=8    2    #4    9    9<=8    break    break****#因此選D 3. 下列可用於 C 語言程式標識符的一組是(名字間以逗號分隔):(多選)A.For, _abc, IF B. _if, _123, file C. void, d, WORDD. For, -abc, IF E. 2_a, xyz, b1_s 知識點:* c語言是大小寫敏感的語言* 標識符以字母或底線開頭,有數字字母底線構成* 不能使用c語言關鍵字(保留字) A 符合B 符合,file不是c語言的關鍵字C 不能有關鍵詞(保留字)voidD -abc "-"減號不能出現在標識符中E 2_a 不能以數字開頭因此選 A B  4. 對於以下代碼:int i,j=6;以下哪句話是對的?A.i 和 j 的初始值都是 6 B. i 被初始為 0,而 j 是 6C. i 不會被初始化,而 j 是 6 D. 不能通過編譯 這個語句做了兩件事情:1. 聲明了變數i,和j2. 對j賦初始值6 因此選C 5. 對於以下代碼:int i;scanf("%d", &i);i %= 4執行後,i 會有幾種可能性?A.7 B. 4 C. 3 D. 2 E.1 F.0 使用者輸入一個整數i,然後i對於4做取餘運算。這裡i可能是正整數0或負整數對於取餘4而言,取餘的結果可能是 0、1、2、3、-1、-2、-3題目問的是有幾種可能,那麼一共是7種因此選:A  6. 對於以下代碼:int i=6;if ( i<= 6 )printf("hello\n");;elseprintf("bye-bye\n");;哪句話是對的?(多選)A. 列印出"hello" B. 無法編譯 C. 列印出"bye-bye"D. 不能通過編譯 E. 列印出"hello bye-bye" * 在沒有大括弧的情況下這裡if後面多出來的分號會導致if和else無法聯結,多個分號代表一個空的語句,if在沒有大括弧的情況下只會和if後面第一條語句結合形成一個if判斷分支,如果加賽一條語句,if就是一個獨立的判斷了,所以不能和後面的else聯結上了。* 我們建議在所有的if分支的後面都加上大括弧因此選 B D  7. 對於以下代碼:int i=6;do {printf("%d", i--);} while (0);哪句話是對的?A. 列印出 5 B. 因為 while(0),無法編譯C. 列印出 6 D. 列印不出東西 * do-while迴圈至少會執行一次* i--是i減以前的值,先計算後減,而--i是i減以後的值,先減後運算。* 0完全等價於邏輯false,但是整數1隻是邏輯true的一個子集,任何非零整數都為邏輯truei的初始值為6,第一次列印為6,i--是減以前的值因此為6,printf執行完後i為5,while條件0始終為false因此迴圈體只會執行一次。因此選 C  8. 對於以下代碼:int i;for ( i=0; i<10;i++)printf("%d", i);for 迴圈後,i 的值是多少?A.11 B. 9 C. 10 D. 不確定 我們知道當i < 10 不成立時迴圈才會終止,也就是說i>=10 那麼步進1的情況下i的臨界值就是10因此選 C  9. 下列程式段輸出結果為:int x=1, y=12;printf(“%d”,y*x++);A.20 B. 10C. 24 D. 12 我們知道++、--的優先順序要低於四則運算的,並且這是一個後置的自增,++i是加1以前的值,先參與運算在做自增。1*12  輸出12 ,然後x自增一,x=2,y不變,當然我們並不推薦這樣的寫法,不利於閱讀,正確的寫法可以把x++拆分到下一個語句執行:printf(“%d”,y*x);x++; 因此選D  10. 對for(運算式 1;;運算式 3)可理解為A. for(運算式 1;運算式 1;運算式 3) B. for(運算式 1;1;運算式 3)C. for(運算式 1; 運算式 3;運算式 3) D. for(運算式 1;0;運算式 3) 這個迴圈的條件判斷被省略掉了,只有初始化和步進的語句,因此也可以當做是一個終止條件始終為1的迴圈。也可以用for改寫為:for(運算式 1;1;運算式 3);  或 while改寫  運算式 1;   while(1){運算式 3}; 當然這個迴圈如果迴圈體內部沒有break等跳出迴圈結構的語句的話就是一個死迴圈。如果有明確的終止條件,我們還是推薦將迴圈繼續條件寫在迴圈體規定的地方,便於閱讀。因此此題選B 11. 以下運算式x&&1用在 if 的條件中時,和哪個是等價的(多選)A.x==0 B. x==1 C. x!=0 D. x!=1 E. x 這裡x&&1右邊的1始終成立,因此可以看成 x當x的值不為0邏輯則為true,因此等價於 x != 0 或者 x x == 1 只是邏輯true x取值範圍的一個子集,因此 x == 1 不等價於 x != 0 或者 x因此選 C E 我們來運行下面一段代碼:```c#include <stdio.h> void main(int argc, char *argv[]){  if (-1) {  printf("-1\n"); }  if (0) {  printf("0\n"); }  if (1) {  printf("1\n"); }  if (2) {  printf("2\n"); }} ```測試範例:```-112 --------------------------------``` 我們發現在邏輯運算式的判斷中, 當x取非0的任意值時,x會被轉換為邏輯true。當然我們並不推薦這種做法,比如你要判斷x是否大於0,可以用if(x)來做這件事,看起來很聰明,但是並不好理解,推薦的做法是  int isPositive = x > 0;  if(isPositive)

 

程式設計入門-C語言基礎知識-翁愷-期中測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.