版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第4章 選擇結構1、以下選項中,當x為大于1的奇數(shù)時,值為0的表達式是A) x%2=0B) x/2C) x%2!=0D) x%2=1 參考答案:A【解析】算術運算符的優(yōu)先級高于關系運算符的優(yōu)先級,所以當x為大于1的奇數(shù)時,A選項的值為假,即0B選項的值為不定值,但絕對不是0C選項的值為真,即1D選項的值為真,即12、當變量c的值不為2、4、6時,值為"真"的表達式是A) (c>=2 && c<=6)&&(c%2!=1)B) (c=2)|(c=4)|(c=6)C) (c>=2 && c<=6)&&
2、amp; !(c%2)D) (c>=2 && c<=6) | (c!=3) | (c!=5) 參考答案:D【解析】邏輯或表達式中有一個值不為0,結果即為真,邏輯與表達式中只有兩個運算對象均非零,結果才為真所以只有選項D滿足要求3、以下敘述中正確的是A) 在C語言中,邏輯真值和假值分別對應1和0B) 關系運算符兩邊的運算對象可以是語言中任意合法的表達式C) 對于浮點變量x和y,表達式:x=y 是非法的,會出編譯錯誤D) 分支結構是根據(jù)算術表達式的結果來判斷流程走向的 參考答案:B【解析】A選項中,在C語言中,邏輯真值對應非0; C選項中,表達式:x=y 是合法的;D選
3、項中,分支結構的流程走向是根據(jù)表達式的值,并不僅僅是算數(shù)表達式的值。因此B選項正確。4、下列關系表達式中,結果為"假"的是A) 3 <= 4B) (3 < 4) = 1C) (3 + 4) > 6D) (3 != 4) > 2 參考答案:D【解析】B選項中,關系表達式(3<4)=1即1=1,結果為真; C選項中,(3+4)>6即7>6,結果為真;A選項中,3<=4結果為真。D選項中,(3!=4)>2即1>2,結果為假。因此D選項正確。5、以下敘述中正確的是A) 對于邏輯表達式:a+ | b+,設a的值為1,則求解表
4、達式的值后,b的值會發(fā)生改變B) 對于邏輯表達式:a+ && b+,設a的值為0,則求解表達式的值后,b的值會發(fā)生改變C) else不是一條獨立的語句,它只是if語句的一部分D) 關系運算符的結果有三種:0,1,-1 參考答案:C【解析】B選項和A選項中,對于邏輯表達式,其中b的值不會因為表達式的結果發(fā)生改變;D選項中,關系運算符的結果有"真"和"假"兩種。因此C選項正確。6、有以下程序 #include <stdio.h> main() int x=35, B; char z='B' ; B = ( x )
5、&& ( z <'b' ); printf("%dn", B ); 程序運行后的輸出結果是A) 1 B) 0 C) 35 D) 66 參考答案:A【解析】本題重點考察邏輯運算符和關系運算符的相關知識,已知變量x為整型變量,并賦值為35,變量z為字符型變量,并賦值為'B'。語句B=(x)&&(z<'b');中,(x)的值為1,'B'的asscii碼小于'b'的asscii碼,所以(z<'b')的值也為1,1&&1結果
6、為1。因此A選項正確。7、若變量已正確定義,以下選項中非法的表達式是A) a!=4|'b'B) 'a'=1/2*(x=y=20,x*3)C) 'a' % 4D) 'A' + 32 參考答案:B【解析】A選項中'a'即表示a為字符常量,再給'a'賦值1/2*(x=y=20,x*3),是不正確的。因此B選項正確。8、與數(shù)學表達式xyz對應的C語言表達式是A) (x>=y)|(y>=x)B) (x>=y>=z)C) (x>=y)!(y>=z)D) (x>=y)&a
7、mp;&(y>=z) 參考答案:D【解析】本題考察關系表達式和邏輯表達式,y大于等于x同時y小于等于z,因此x<=y和y<=z是邏輯與的關系。因此D選項正確。9、以下敘述中正確的是A) 邏輯"或"(即運算符|)的運算級別比算術運算要高B) C語言的關系表達式:0<x<10完全等價于: (0<x) && (x<10)C) 邏輯"非"(即運算符!)的運算級別是最低的D) 由&&構成的邏輯表達式與由|構成的邏輯表達式都有"短路"現(xiàn)象 參考答案:D【解析】B選項
8、中,(x>0)&&(x<10)的值是1或0,條件是x>0 并且x <10。但是 0<x<10這種寫法的結果任何時候都是1; C選項中,邏輯"非"(即運算符!)的運算級別是最高的;A選項中,算術運算符優(yōu)先級較高,關系和邏輯運算符優(yōu)先級較低。因此D選項正確。10、表示關系式xyz的C語言表達式的是A) (x<=y)&&(y<=x)B) (x<=y)|(y<=x)C) (x<=y<=z)D) x<=y)!(y<=x) 參考答案:A【解析】本題考察關系表達式和邏輯表達
9、式,y大于等于x同時y小于等于z,因此x<=y和y<=z是邏輯與的關系。因此A選項正確。11、有以下程序 #include <stdio.h> void fun (char *c) while(*c) if( *c >= 'a' && *c <= 'z') *c =*c - ('a' - 'A'); c+; main() char s81; gets(s); fun(s); puts(s); 當執(zhí)行程序時從鍵盤上輸入Hello Beijing<回車>,則程序的輸出結果
10、是A) hello beijingB) Hello BeijingC) HELLO BEIJINGD) hELLO Beijing 參考答案:C【解析】主程序讀取整個字符串存于s中,調(diào)用fun函數(shù),字符指針c指向數(shù)組s。函數(shù)fun的功能是把指針c所指向的字符數(shù)組中的所有小寫字符轉換為大寫。gets函數(shù)可以把空格作為字符串的一部分輸入,以回車作為輸入結束。如果*c為小寫字符,則*c=*c-32(轉大寫)。因此C選項正確。12、若有以下程序 #include <stdio.h> main() int a=6, b=0, c=0; for ( ;a&&(b=0); ) b
11、 += a; a -= c+; printf("%d,%d,%dn", a,b,c); 則程序的輸出結果是A) 5,6,0 B) 6,0,0 C) 6,6,1 D) 5,6,1 參考答案:C【解析】本題重點考察C語言中for語句和邏輯表達式,for語句的一般形式為: for(表達式1;表達式2;表達式3) 語句其循環(huán)中的"表達式1(循環(huán)變量賦初值)"、"表達式2(循環(huán)條件)"和"表達式3(循環(huán)變量增量)"都是選擇項, 即可以缺省,但";"不能缺省。該題目中省略了"表達式1(循環(huán)變量賦初
12、值)"和"表達式3(循環(huán)變量增量)"。for ( ;a&&(b=0); )b+=a;a-=c+;相當于while(a&&(b=0)) b+=a;a-=c+;。因此C選項正確。13、有以下程序 #include <stdio.h> main() double x=2.0, y; if( x<0.0 ) y=0.0; else if( (x<5.0) && (!x) ) y=1.0 / ( x+2.0 ); else if( x<10.0 ) y=1.0 / x; else y=10.0;
13、printf(" %fn ", y ); 程序運行后的輸出結果是A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000 參考答案:C【解析】本題重點考察if語句,變量x和y均為double類型,由于變量x賦值為2.0,因此執(zhí)行if(x<5.0)&&(!x),即條件為0,繼續(xù)執(zhí)行if( x<10.0 ),條件為1,即執(zhí)行y=1.0 / x;。依據(jù)printf()函數(shù)輸出類型中f是以小數(shù)形式輸出單、雙精度實數(shù)。因此C選項正確。14、若a是數(shù)值類型,則邏輯表達式 (a=1)|(a!=1)的值是A) 1B) 0C)
14、 2D) 不知道a的值,不能確定 參考答案:A【解析】邏輯或"|"要求只要兩邊的運算對象有一個非零,結果就為真,雖然不知道a的值,但是若a為1,則左邊運算對象為1,若a的值不是1,則右邊運算對象的值為1,所以總能保證一邊非零,所以結果為真,即115、有以下程序#include <stdio.h>main() int a=1,b=2,c=3,d=0; if (a=1 && b+=2)if (b!=2|c-!=3)printf("%d,%d,%dn",a,b,c); else printf("%d,%d,%dn"
15、;,a,b,c); else printf("%d,%d,%dn",a,b,c);程序運行后的輸出結果是A) 1,3,2 B) 1,3,3 C) 1,2,3 D) 3,2,1 參考答案:B【解析】else總是和最近的if配對,所以進入第一個if語句中條件判斷時,因為是邏輯與操作需要兩邊運算對象的值均為非零值,才為真,所以需要逐個執(zhí)行判斷的結果為1,不再執(zhí)行第二個case語句中的操作而是進入第二個if語句條件判斷,因為b!=2條件成立所以整個條件表達式的值為真,所以不再執(zhí)行邏輯或的第二個運算對象(c- !=3)c的值不變,也不再執(zhí)行第一個else語句打印a的值1,b的值3,c
16、的值316、若有以下程序 #include <stdio.h> main() int a=1,b=2,c=3,d=4; if (a=2) | (b=1) c=2; if (c=3) && (d=-1) a=5; printf("%d,%d,%d,%dn", a,b,c,d); 則程序的輸出結果是A) 1,2,3,4B) 2,1,2,-1C) 5,1,2,-1D) 2,2,2,4 參考答案:D【解析】第一個if語句的判斷條件中是邏輯或表達式,所以只要有一個運算對象為真結果就為真,且如果前面的已經(jīng)為真,后面的表達式不再進行執(zhí)行判斷執(zhí)行第一個if判斷條
17、件時a的值為2,整個表達式的值為真,b的值不變,c的值為2判斷第二個if條件為邏輯與表達式,只有兩個運算對象均非零,才為真,第一個表達式c=3,不成立,不再判斷第二個運算對象,所以不執(zhí)行d=-1操作和a=5操作所以結果為選項D17、設有定義:int a=0,b=1;,以下表達式中,會產(chǎn)生"短路"現(xiàn)象,致使變量b的值不變的是A) a+ && b+B) a+ | +bC) +a && b+D) +a | +b 參考答案:A【解析】運算符"+"放在變量前面時,表示將變量+1,再參與其他操作,a+ && b+時,由
18、于a值是0直接判定與運算結果為0,忽視b+的值,因此b值不發(fā)生改變,答案為A選項。18、以下表達式的值與x無關、其值恒為真的是A) 0 < x < 5 B) x>10 && x<5 C) x>10 && x<5 D) x<10 && x>5 參考答案:A【解析】邏輯與只有在"&&"符號兩邊操作均為真時,邏輯與為真,故排除B,D選項;邏輯或當且只當"|"符號兩邊操作至少有一個為真時,邏輯或結果為真,x>10 | x<5 為真與x值有關
19、,故排除C選項;答案為A選項。19、以下選項中錯誤的是A) a&=b 與 a=a&b 等價B) a=b 與 a=ab 等價 C) a|=b 與 a=a|b 等價 D) a!=b 與 a=a!b 等價 參考答案:D【解析】D選項中,a!=b表示a不等于b時,運算結果為1,或者為0;而a=a!b是一種語法錯誤,!是非運算,且是單目運算符,只要求有一個操作數(shù),故兩者不等價,答案為D選項。20、若有定義:int a=0,b=0,c=0,d=0;,以下關于C語言表達式:(+a | +b) ? +c : +d 執(zhí)行順序的敘述正確的是A) 先執(zhí)行+a,表達式+a的值為1;再執(zhí)行+b,表達式+
20、b的值為1,由此可確定(+a | +b)值為1,因此執(zhí)行+cB) 先執(zhí)行+a,表達式+a的值為1,由此可確定(+a | +b)值為1,因此執(zhí)行+cC) 先執(zhí)行+b,表達式+b的值為1;再執(zhí)行+a,表達式+a的值為1,由此可確定(+a | +b)值為1,因此執(zhí)行+cD) 先執(zhí)行+b,表達式+b的值為1,由此可確定(+a | +b)值為1,因此執(zhí)行+c 參考答案:B【解析】表達式1?表達式2:表達式3,若表達式1為真,則執(zhí)行表達式2,否則執(zhí)行表達式3,+a表示先將變量a+1,再執(zhí)行其他操作,邏輯或運算符遵循"短路求值"策略,即只有在僅靠左操作數(shù)的值無法確定該邏輯表達式的結果時,
21、才會求解右操作數(shù),表達式(+a | +b)中,左操作數(shù)+a的值為1,已經(jīng)可以確定整個邏輯表達式的結果為1,因此右操作數(shù)+b不再求解,直接執(zhí)行表達式2,即+c,答案為B選項。21、若有定義:int a=0,b=0,c=0,d=0; ,有C語言表達式 (a+ && b+) ? c+ : d+,以下關于其執(zhí)行順序的敘述正確是A) 先執(zhí)行a+,表達式a+的值為0,由此即可確定(a+&&b+)的值為0,因此執(zhí)行d+B) 先執(zhí)行a+,表達式a+的值為0;再執(zhí)行b+,表達式b+的值為0,由此可確定(a+ && b+)值為0,因此執(zhí)行d+C) 先執(zhí)行a+,表確定
22、(a+ && b+)值為1,因此執(zhí)行c+達式a+的值為1;再執(zhí)行b+,表達式b+的值為1,由此可D) 先執(zhí)行b+,表達式b+的值為1;再執(zhí)行a+,表達式a+的值為1,由此可確定(a+ && b+)值為1,因此執(zhí)行c+ 參考答案:A【解析】表達式1?表達式2:表達式3,若表達式1為真,則執(zhí)行表達式2,否則執(zhí)行表達式3。邏輯與運算符遵循"短路求值"策略,即只有在僅靠左操作數(shù)的值無法確定該邏輯表達式的結果時,才會求解右操作數(shù),表達式(a+&&b+)中,左操作數(shù)a+的值為0,已經(jīng)可以確定整個邏輯表達式的結果為0,因此右操作數(shù)b+不再求
23、解,直接執(zhí)行表達式3,即d+,答案為A選項22、下關于邏輯運算符兩側運算對象的敘述中正確的是()。A) 可以是任意合法的表達式B) 只能是整數(shù)0或非0整數(shù)C) 可以是結構體類型的數(shù)據(jù)D) 只能是整數(shù)0或1 參考答案:A【解析】C語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是任意合法的表達式,所以選擇A)。23、設有宏定義: #define IsDIV(k,n) ( ( k%n=1) ? 1 : 0)且變量m已正確定義并賦值,則宏調(diào)用: IsDIV(m,5) && IsDIV(m,7)為真時所要表達的是A) 判斷m是否能被5和7整除B) 判斷m被5和7整除是否都余
24、1C) 判斷m被5或者7整除是否余1D) 判斷m是否能被5或者7整除 參考答案:B【解析】本題考查邏輯運算符的相關概念,邏輯與若要為真,那么兩邊都要為真,所需要m都能被5和7整除都余1,所以選項B正確。24、有以下程序#include <stdio.h>main() int c,d; c= 13&5; d=10&&5; printf("%d,%dn", c, d); 程序的運行結果是A) 5,1 B) 1,1 C) 18,1 D) 13,1 參考答案:A【解析】"&"按位與運算,13=1101B,5=101B,
25、執(zhí)行語句c=13&5;結果為101B=5,即c=5。"&&"邏輯與運算,10與5均為真,結果為真,即d=1。A選項正確。25、有以下程序#include <stdio.h>main() char c='A' int x=36, b; b= (x>>2) && ( c<'a' ); printf("%dn", b );程序運行后的輸出結果是A) 1 B) 0 C) 2 D) 4 參考答案:A【解析】">>"右移運算符,x=3
26、6,執(zhí)行x>>2后,x=9;"&&"邏輯與運算,先計算左邊表達式真假,若為假,不計算右表達式,整個邏輯表達式為假,若左表達式為真,再計算右表達式,之后做邏輯與運算;x>>2為真,A的ASCII碼為65,a的ASCII碼為97,c<'a'為真,整個邏輯表達式(x>>2) && ( c<'a' )為真,得b=1。A選項正確。26、若變量已正確定義,則以下for循環(huán) for ( x=0,y=0; ( y!=123 ) && ( x<4 ); x+
27、);A) 執(zhí)行4次 B) 執(zhí)行3次C) 執(zhí)行次數(shù)不確定 D) 執(zhí)行123次 參考答案:A【解析】for循環(huán)語句格式:for(exp1;exp2;exp3)。exp1通常用來給循環(huán)變量賦初值; exp2通常是循環(huán)條件,以便決定是否繼續(xù)執(zhí)行循環(huán)體;exp3通??捎脕硇薷难h(huán)變量的值。程序執(zhí)行過程為:賦初值x=0,y=0;邏輯表達式y(tǒng)!=123為真,x<4為真,則整個表達式( y!=123 ) && ( x<4 )為真,循環(huán)條件成立;x=1;再次判斷表達式為真;x=2;直到x=4時,y!=123為真,x<4為假,則整個表達式( y!=123 ) &&
28、 ( x<4 )為假,循環(huán)條件不成立,退出循環(huán)。for循環(huán)執(zhí)行4次,A選項正確。27、以下程序的功能是判斷輸入的一個整數(shù)是否能被3或7整除,若能整除,輸出YES,否則輸出NO。在下劃線處應填入的選項是#include <stdio.h>main() int k; printf("Enter a int number : "); scanf("%d", &k ); if _ printf("YESn"); else printf("NOn"); printf("%dn",
29、k%3);A) ( (k%3=0) | (k%7=0) )B) (k/3=0) | (k/7=0)C) ( (k%3=0) | (k%7=0) )D) ( (k%3=0)&& (k%7=0) ) 參考答案:A【解析】求余運算符為%,是否能被3或7整除表達式為 (k%3=0)|(k%7=0),A選項正確。B選項"/"為除號,錯誤。C選項中"="為賦值運算符,不是邏輯運算符"=",錯誤。D選項"&&"為邏輯與,本題應該為邏輯或"|",錯誤。28、有以下函數(shù)int fu
30、n( char *s, char *t ) while( *s )&&( *t ) && (*t+ = *s+ ) ); return (*s-*t);函數(shù)的功能是A) 求字符串的長度B) 比較兩個字符串的大小C) 將字符串s復制到字符串t中D) 連接字符串s和字符串t 參考答案:B【解析】函數(shù)體執(zhí)行過程為:將兩個字符串首地址傳入函數(shù),分別賦給指針s與t,在函數(shù)體內(nèi)s與t所指向的字符串的字符不為"0"時,判斷兩個指針指向的字符是否相同,若相同則兩個指針分別加一指向下一個字符,若不同則退出while循環(huán),返回不相同的字符的ASCII碼值之差。返
31、回值大于0表示字符串s>t;返回值小于0表示s<t;返回值為0,表示s=t。函數(shù)實現(xiàn)了比較兩個字符串大小的功能,B選項正確。29、有以下程序 #include <stdio.h> main() char a44=' ' int i,j; for(i=0;i<4; i+) ai0=ai3='#' for(j=1; j<3; j+) a0j=a3j='#' if(i!=0)&&(i!=3) aij='o' for(i=1;i<3; i+) for(j=0; j<4;j+)
32、 printf("%2c",aij); printf("n"); 程序的運行結果是A) # o o # o o #B) # # # # o o #C) # o o # # # #D) # # # # # # # 參考答案:A【解析】程序的執(zhí)行過程為:定義4行4列二維數(shù)組字符a并且初始化為a00='',其他元素均為0。執(zhí)行for循環(huán)將數(shù)組第一列和第四列賦值為'#'。執(zhí)行for循環(huán)將數(shù)組第一行和第四行的第二個到第三個元素賦值為'#',然后將剩余元素全部賦值為'o'。此時矩陣為#,#,#,#,#,
33、o,o,#,#,o,o,#,#,#,#,#。之后輸出矩陣第二行與第三行元素為: # o o #<回車> # o o #,A選項正確。30、若有定義int x,y; 并已正確給變量賦值,則以下選項中與表達式(xy)?(x) : (y)中的條件表達式(xy) 等價的是()。A) (xy<0|xy>0)B) (xy<0)C) (xy>0)D) (xy0) 參考答案:A【解析】條件表達式:x表達式1?表達式2:表達式3 的含義是:先求解表達式1,若為非0(真),則求解表達式2,將表達式2的值賦給x。若表達式1的值為0(假),則求解表達式3,將表達式3的值賦給x。在本
34、題中與表達式1:(xy)等價的是(xy<0|xy>0)。31、若變量已正確定義 for( x=0,y=0; ( y!=99 && x<4 ); x+ )則以上for循環(huán)A) 執(zhí)行3次B) 執(zhí)行4次C) 執(zhí)行無限次D) 執(zhí)行次數(shù)不定 參考答案:B【解析】本題重點考察for語句的循環(huán)次數(shù),for(x=0,y=0;(y!=99&&x<4);x+),y!=99&&x<4即循環(huán)條件當y不等于99以及x<4時,執(zhí)行循環(huán)語句,當有一個條件不成立時,均結束循環(huán),因此循環(huán)4次,B選項正確。32、有以下程序#include <
35、;stdio.h>main() int a=0,b=0,c=0,d=0; (+a | +b) ? +c : +d; printf("%d,%d,%d,%dn", a,b,c,d);程序的運行結果是A) 1,0,1,0 B) 1,1,0,1 C) 1,0,0,1 D) 1,1,1,0 參考答案:A【解析】條件表達式一般形式:exp1?exp2:exp3,執(zhí)行規(guī)則為:若exp1為真,求解exp2,輸出exp2的值,不計算exp3的值;若為假,求解exp3,輸出exp3的值,不計算exp2的值。本題程序執(zhí)行過程為:求解邏輯表達式(+a | +b),先求解+a,a=1,則整個
36、表達式為真,不計算+b,然后求解+c,不計算+d,最后得到a=1,b=0,c=1,d=0,A選項正確。33、有以下程序#include <stdio.h>main() int a, b, c=241; a = c/100 % 9; b = ( -1 )&&( -1 ); printf("%d, %dn", a, b );程序運行后的輸出結果是A) 2,1 B) 6,1 C) 6,0 D) 2,0 參考答案:A【解析】程序執(zhí)行過程為:c=241,c/100=2,2%9=2,得a=2;"="優(yōu)先級低于"&&
37、;",非0值為真,0值為假,即(-1)為真,邏輯與表達式(-1)&&(-1)為真,得b=1。A選項正確。34、設有定義:int a=64,b=8;,則表達式(a&b)|(a&&b)和(a|b)&&(a|b)的值分別為A) 1和1 B) 1和0 C) 0和1 D) 0和0 參考答案:A【解析】常用的位運算符有:""按位求反,"<<"左移,">>"右移,"&"按位與,""按位異或,"|&quo
38、t;按位或。邏輯或運算符"|",計算左表達式值,如果為真,則不計算右表達式,而整個表達式為真,若左表達式為假,再計算右表達式然后做或運算。邏輯與運算符"&&",計算左表達式值,如果為假則不計算右表達式,而整個表達式為假,若左表達式為真,再計算右表達式然后做與運算。a=64=1000000B,b=8=1000B,a&b=0為假,a&&b為真,(a&b)|(a&&b)為真,值為1。a|b=1001000B為真, a|b為真,則(a|b)&&(a|b)為真,值為1。A選項正確。35
39、、設有定義:int a=0,b=1,c=1; 以下選項中,表達式值與其它三個不同的是A) b=a=c B) a=b=c C) a=c=b D) c=a!=c 參考答案:A【解析】賦值運算結合性為由右向左結合,賦值運算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。成功實現(xiàn)賦值后以左值為返回值。邏輯表達式成立則返回1,不成立返回0。A選項邏輯表達式a=c不成立(0),則b=0,表達式值為0。B選項中將c賦值給b,b=1,再將b賦給a,a=1,表達式值為1。C選項邏輯表達式c=b成立(1),則a=1,表達式值為1。D選項邏輯表達式a!=c成立(1),則c=1,表達式值為1。A選
40、項與其他選項不同,A選項正確。36、有如下程序#include <stdio.h>main() int a = 0, b = 1; if (+a = b+) printf("T"); else printf("F"); printf("a=%d,b=%dn", a, b); printf("n");程序運行后的輸出結果是A) Ta=0,b=1 B) Fa=1,b=2 C) Ta=1,b=2 D) Fa=0,b=2 參考答案:C【解析】程序執(zhí)行過程為:判斷+a = b+是否成立,+a前置運算先加1,則a=
41、1,b+后置運算先取值,則b=1,也即是判斷1=1,成立,輸出T,之后b=2,輸出a=1,b=2。C選項正確。37、有以下程序 #include <stdio.h> main() int a = -2, b = 0; while (a+ && +b) ; printf("%d,%dn", a, b ); 程序運行后輸出結果是A) 0,2 B) 0,3 C) 1,3 D) 1,2 參考答案:D【解析】本題重點考察while語句,變量a和b分別賦初值為-2和1,while語句的語義是:計算表達式的值,當值為真(非0)時, 執(zhí)行循環(huán)體語句。a+即a參與
42、運算后,a的值再自增1。+b即b自增1后再參與其它運算。當表達式的值為0時,退出循環(huán),最后輸出a和b的值為1和2。因此D選項正確。38、有以下程序#include <stdio.h>main() int a=0,b=0,c=0,d=0; (a+ && b+) ? c+ : d+; printf("%d,%d,%d,%dn", a,b,c,d);程序的運行結果是A) 1,0,0,1 B) 1,1,0,1 C) 1,0,1,0 D) 1,1,1,0 參考答案:A【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變量之前,規(guī)則是先使變量的值增(或
43、減)1,然后以變化后表達式的值參與其他運算;后置運算,運算符放在變量之后,規(guī)則是變量先參與其他運算,然后再使變量的值增(或減)。條件運算符"?",執(zhí)行規(guī)則為: 若exp1為真,求解exp2,輸出exp2的值,不計算exp3的值;若為假,求解exp3,輸出exp3的值,不計算exp2的值。"&&"邏輯與表達式:exp1&&exp2。規(guī)則為,對exp1求值,若為0,則表達式為0,且不計算exp2;若exp1非0,則求exp2值,作為表達式值。題目中a+先取值為0,則(a+ && b+)為0,且不計算b+與c+,
44、而計算d+,并把這個值作為整個表達式的值輸出,然后a與d自加1,最后得到a=1,b=0,c=0,d=1。A選項正確。39、有如下程序#include <stdio.h>main() int a = 0, b = 1; if (a+ && b+) printf("T"); else printf("F"); printf("a=%d,b=%dn", a, b);程序運行后的輸出結果是A) Ta=1,b=2 B) Fa=0,b=2 C) Fa=1,b=1 D) Ta=0,b=1 參考答案:C【解析】題目中判斷if條件是否成立,a+先取值為0,則(a+ && b+)為0,且不計算b+,而后a自增得a=1,if條件不成立執(zhí)行else函數(shù)體,輸出F。最后執(zhí)行語句printf("a=%d,b=%dn", a, b);按照格式輸出a=1,b=1。C選項正確。40、if語句的基本形式是:if (表達式) 語句,以下關于"表達式"值的敘述中正確的是A) 必須
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教學教務年終總結匯報
- 四川省眉山市東坡區(qū)眉山育英實驗學校2024-2025學年高一上學期1月期末地理試題( 含答案)
- 電氣物資知識培訓課件
- 2025年度智能安防SAAS解決方案銷售服務協(xié)議2篇
- 醫(yī)學基礎知識培訓課件
- 河北省張家口市萬全區(qū)2024-2025學年八年級上學期1月期末考試生物試卷(含答案)
- 遼寧省葫蘆島市(2024年-2025年小學六年級語文)人教版課后作業(yè)(下學期)試卷及答案
- 2024年事業(yè)單位教師招聘言語理解與表達題庫附參考答案【突破訓練】
- 貴州盛華職業(yè)學院《個人理財學》2023-2024學年第一學期期末試卷
- 新疆巴音郭楞蒙古自治州(2024年-2025年小學六年級語文)部編版階段練習(上學期)試卷及答案
- 科教版2023-2022小學五年級科學上冊期末試卷及答案
- 3360機dp c2255維修手冊中文版06chapgeneral
- 北京生命科技研究院有限公司招聘考試真題2022
- (42)-妊娠合并內(nèi)外科疾病
- 骨科手術后患者營養(yǎng)情況及營養(yǎng)不良的原因分析,骨傷科論文
- 糕點生產(chǎn)檢驗記錄表
- GB/T 1040.3-2006塑料拉伸性能的測定第3部分:薄膜和薄片的試驗條件
- 河北省房屋建筑和市政基礎設施施工圖設計文件審查要點(版)
- 醫(yī)院院長年終工作總結報告精編ppt
- 綠化養(yǎng)護重點難點分析及解決措施
- “三排查三清零”回頭看問題整改臺賬
評論
0/150
提交評論