(完整word版)大學C語言期末考試練習題集(帶詳解答案解析)_第1頁
(完整word版)大學C語言期末考試練習題集(帶詳解答案解析)_第2頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、單項選擇題1. ( A )是構成 C 語言程序的基本單位。A、函數(shù)B、過程C、子程序D、子例程2._C 語言程序從C開始執(zhí)行。A)程序中第一條可執(zhí)行語句 B)程序中第一個函數(shù)C)程序中的 main 函數(shù) D)包含文件中的第一個函數(shù)3.以下說法中正確的是( C )。A、C 語言程序總是從第一個定義的函數(shù)開始執(zhí)行B、 在 C 語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義C、C 語言程序總是從 main()函數(shù)開始執(zhí)行D、C 語言程序中的 main()函數(shù)必須放在程序的開始部分4. 下列關于 C 語言的說法錯誤的是( B )。A) C 程序的工作過程是編輯、編譯、連接、運行B) C 語言不區(qū)

2、分大小寫。C) C 程序的三種基本結構是順序、選擇、循環(huán)D) C 程序從 main 函數(shù)開始執(zhí)行5. 下列正確的標識符是(C )。A.-a1B.aiC.a2_iD.i nt t58 題為相同類型題考點:標識符的命名規(guī)則(1)只能由字母、數(shù)字、下劃線構成(2)數(shù)字不能作為標識符的開頭(3)關鍵字不能作為標識符選項 A 中的-”,選項 B 中與不滿足(1);選項 D 中的 int 為關鍵字,不滿足(3)6. 下列 C 語言用戶標識符中合法的是( B )。A)3ax B)x C)case D)-e2E)u nion選項 A 中的標識符以數(shù)字開頭不滿足(2);選項 C, E 均為為關鍵字,不滿足(3)

3、;選項 D 中的不滿足(1 );7.下列四組選項中,正確的C 語言標識符是(C )。A)%xB) a+bC)a123D) 123選項 A 中的%”,選項 B 中+ ”不滿足(1);選項 D 中的標識符以數(shù)字開頭不滿足(2)D )。B、整型、實型、邏輯型、字符型D、整型、實型、字符型5%2 的結果是_C_。C)1D)3詳見教材 P5253.%為求余運算符,該運算符只能對整型數(shù)據(jù)進行運算。且符號與被模數(shù)相同。5%2=1 ;5%( -2) =1 ;( -5) %2=-1 ;( -5) %( -2) =-1 ;/為求商運算符,該運算符能夠?qū)φ?、字符、浮點等類型的數(shù)據(jù)進行運算,11.如果 int a=

4、3,b=4 ;則條件表達式abook line#His.age選項 B 中的,$,選項 D 中 ”,”# ”,”,” ”-”不滿足(1); 選項 C 中的 while 為關鍵字,不滿足( 3)&下列四組字符串中都可以用作C 語言程序中的標識符的是(A )。9.C 語言中的簡單數(shù)據(jù)類型包括(A、整型、實型、邏輯型C、整型、字符型、邏輯型10.在 C 語言程序中,表達式5/2=2A) 3B) 4C) 0D) 1詳見教材 P97.表達式 1 ?表達式 2: 表達式 3先計算表達式 1 ,若表達式 1 成立,則選擇計算表達式 2,并表達式 2 的值作為整個大表達式的值;若表達式 1 不成立,則

5、選擇計算表達式 3,并將表達式 3 的值作為整個大表達式的值此題中的 ab 相當于表達式 1, a 相當于表達式 2 , b 相當于表達式 3.a 為 3, b 為 4。ab 表達式 1 成立,因此計算表達式 2,并將表達式 2 的值即 a 中的值,并作為整個表達式的值,因此整個表達式的值為312 .若 int x=2,y=3,z=4 則表達式 xage33. 設有如下定義:struck sk int a;float b;data;int *p;若要使 P 指向 data 中的 a 域,正確的賦值語句是 _C_A) p=&a;B) p=data.a; C) p=&data.a;

6、D)*p=data.a;34. 設有以下說明語句:typedef struct stu int a;float b; stutype;則下面敘述中錯誤的是(D )。A、struct 是結構類型的關鍵字B、struct stu 是用戶定義的結構類型C、a 和 b 都是結構成員名D、stutype 是用戶定義的結構體變量名35 . 語句 int *p;說明了_ C _。A) p 是指向一維數(shù)組的指針B) p 是指向函數(shù)的指針,該函數(shù)返回一 int 型數(shù)據(jù)C) p 是指向 int 型數(shù)據(jù)的指針 /指針的定義教材 P223D) p 是函數(shù)名,該函數(shù)返回一指向 int 型數(shù)據(jù)的指針36.下列不正確的定義

7、是(A )。A. int *p=&i,i;B.i nt *p,i;C .int i,*p=&i;D.i nt i,*p;選項 A 先定義一個整型指針變量p,然后將變量 i 的地址賦給 p。然而此時還未定義變量 i 因此編譯器無法獲得變量i 的地址。(A 與 C 對比,選項 C 先定義變量 i,則在內(nèi)存中為i 分配空間,因此 i 在內(nèi)存空間的地址就可以確定了;然后再定義p,此時可以為 p 賦 i 的地 址,D) (*p).ageC 正確)37.若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是:(D )A) p=qB) *p=*q C) n=*qD)

8、p=np,q 同為整型指針變量,二者里面僅能存放整型變量的地址。選項 A,q 中為地址,因此可將此地址賦給p選項 B,*p 表示 p 所指向?qū)ο?n 的內(nèi)容,即一個整數(shù);*q 表示 q 所指向?qū)ο蟮膬?nèi)容,由于 在定義 q 時為其初始化,將 p 中 n 的地址給 q,因此 p 中存放 n 的地址,*q 表示 q 所指向 對象 n 的內(nèi)容.因此*p=*q相當于 n=n;選項 C,n=*q 等價于 n=n;選項 D,p 中只能存放地址,不能將 n 中的整數(shù)值賦給 p38 .有語句:int a10,;則B_是對指針變量 p 的正確定義和初始化。A)in t p=*a;B)i nt *p=a;C)i n

9、t p=&a; D)i nt *p=&a;選項 A, a 是數(shù)組名,不是指針變量名,因此不可用*標注數(shù)組名 a選項 C, a 是數(shù)組名,數(shù)組名就是地址,無需再用地址符號。而且在定義指針變量p 時,應在變量名前加*,標明 p 是指針變量選項 D , a 是數(shù)組名,數(shù)組名就是地址,無需再用地址符號。39. 若有說明語句“ht a5,*p=a; ”則對數(shù)組元素的正確引用是(C )。A.apB.paC.*(p+2)D.p+2首先定義一個整型數(shù)組a, a 的長度為 5,然后定義一個指針變量p,并同時對 p 進行初始化, 將數(shù)組 a 的地址賦給 p。 因此此時 p 中存放的數(shù)組 a 的首地

10、址, 即數(shù)組中第一個元素 a0的地址。對于數(shù)組元素下標的引用(詳見 p144), 一般形式 數(shù)組名下標其中下標為邏輯地址下標,從 0 開始計數(shù),方括號中的下標可以是變量,可以是表達式,但結果一定要是整數(shù)。選項 A , p 中存放的是地址,不是整數(shù),不能做數(shù)組元素的下標選項 B , a 是數(shù)組名,數(shù)組名就是地址,不是整數(shù),不能做數(shù)組元素的下標選項 C ,(重點! !詳見 p231234)p+2 表示指向同一數(shù)組中的下兩個元素的地址,當前 p 指向 a0,貝 U p+2 表示 a2的地址,因此*(p+2)表示 a2的內(nèi)容40. 有如下程序int a10=1,2,3,4,5,6,7,8,9,10,*

11、P=a;則數(shù)值為 9 的表達式是_B(重點! ! !詳見 p231234)首先定義一個整型數(shù)組a, a 的長度為 5,然后定義一個指針變量P,并同時對 P 進行初始化,將數(shù)組 a 的地址賦給 P。因此此時 P 中存放的數(shù)組 a 的首地址,即數(shù)組中第一個 元素 a0的地址。數(shù)組中 9 對應的是 a8,選項 B,P+8 表示數(shù)組中后 8 個元素的地址,即a8的地址。*(P+8)則表示該地址內(nèi)所存放的內(nèi)容,即a8的值。選項 A ,*P 表示 P 所指向?qū)ο蟮膬?nèi)容,此時 P 指向 a0, *P 即 a0的值 1. *P+9=1+9=10選項 C,*P 表示 P 所指向?qū)ο蟮膬?nèi)容,此時 P 指向 a0,

12、 *P 即 a0的值。因此*P+=9 即*P =*P+9,等價于 a0=a0+9.選項 D,P+8 表示數(shù)組中后 8 個元素的地址,即 a8的地址,而非 a8中的值。41. 在 C 語言中,以 _D_作為字符串結束標志A) n B) C) D) 042. 下列數(shù)據(jù)中屬于 字符串常量”的是(A )。A. a”B.ABCC. abcO D. a 若干個字符構成字符串在 C 語言中,用單引號標識字符;用雙引號標識字符串選項 B , C,分別用和標識字符串選項 D,標識字符。43. 已知 char x=hello, y=h,e,a,b,e;,則關于兩個數(shù)組長度的正確描述是_B_LA)相同 B)x 大于

13、 y C)x 小于 yD)以上答案都不對C 語言中,字符串后面需要一個結束標志位0,通常系統(tǒng)會自動添加。對一維數(shù)組初始化時可采用字符串的形式(例如本題數(shù)組 x),也可采用字符集合的形式(例如本題數(shù)組 y)。在以字符串形式初始化時,數(shù)組x 不盡要存儲字符串中的字符,還要存儲字符串后的結束標志位,因此數(shù)組x 的長度為 6;在以字符集合形式初始化時,數(shù)組y,僅存儲集合中的元素,因此數(shù)組y 長度為 5A) *P+9B) *(P+8)C) *P+=9D) P+8二、 讀程序基本輸入輸出及流程控制1.#i nclude main () int a=1,b=3,c=5;if (c=a+b)prin tf(y

14、esn);elseprin tf( non);運行結果為:no詳見教材 p89 選擇結構詳見教材 p91 關系符號詳見附錄 D p378 符號的優(yōu)先級=表示判斷符號兩邊的值是否相等;=表示將符號右邊的值賦給左邊的變量本題考點是選擇結構3 種基本形式的第二種選擇結構三種一般形式中的語句”皆為復合語句,復合語句要用 括起來,只有當復合語句中只包括一條語句時可以省略 ,此題即如此,因此兩個 printf 操作沒有加 若 c=a+b 成立,則執(zhí)行 printf(yesn);一共包含了兩個選擇結構(兩個if 語句)否則(即 c=a+b 不成立),執(zhí)行 printf(non);+的優(yōu)先級高于=,因此先算

15、a+b,值為 4,表達式 5=4 不成立,因此執(zhí)行 即輸出字符串 no2.#i nclude main () int a=12, b= -34, c=56, min=0;mi n=a;if(mi nb)mi n=b;if(mi nc)min=c;printf(min=%d, min);運行結果為:min=-34詳見教材 p89 選擇結構本題考點是選擇結構3 種基本形式的第一種prin tf(non);定義變量,并賦值此時 a=12, b= -34, c=56, min=O將 a 中值拷貝,賦給 min,覆蓋了 min 中的 0,此時 min 中的值被更新為 12。若 minb 成立,則執(zhí)行 m

16、in=b;若 minc 成立,則執(zhí)行 min=c;輸出 min 中的值12 大于-34,第一個 if 語句的表達式成立,因此執(zhí)行 min=b;執(zhí)行后 min 中的值被更新為-34.-34 小于 56,第二個 if 語句的表達式不成立,因此不執(zhí)行min=c;最后輸出 min 中的值,為-34.3.#i nclude main () int x=2,y= -1,z=5;if(xy)if(y0)z=0;else定義變量,并賦值此時 a=12, b= -34, c=56, min=Oz=z+1;printf( %dn ”,z);運行結果為:5遇到選擇結構,首先要明確條件表達式成立時執(zhí)行哪些操作。本題中

17、,第一個 if 語句,其后的復合語句沒有大括號 ,說明復合語句中只包含一條語句, 進而省略了 。內(nèi)層的 ifelse是選擇結構的第二種基本形式,在結構上視為一條語句。因此內(nèi)層的if.else作為第一個if 語句的復合語句。若表達式 xy 成立,則繼續(xù)判斷若 y=0 ),執(zhí)行 z=z+1;輸出 z2-1,表達式 xy 不成立,因此不執(zhí)行內(nèi)層的ifelse.進而 z 中的值沒有被改變。輸出 z 中的值為 54.#in clude main () float a,b,c,t;a=3;b=7;c=1;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c

18、=t;prin tf(%5.2f,%5.2f,%5.2f,a,b,c);運行結果為:1.00,2.00,7.00詳見教材 p72 數(shù)據(jù)的輸出形式本題包含了 3 個 if 語句,每個 if 語句后的 都不可省略,因為每個 中都包含了多條語句若表達式 ab 成立,則執(zhí)行t=a;a=b;b=t;若表達式 ac 成立,則執(zhí)行t=a;a=c;c=t;若表達式 bc 成立,則執(zhí)行t=b;b=c;c=t;輸出 a,b,c 中的值,要求輸出的每個數(shù)據(jù)寬度為5 個空格,小數(shù)部分保留2 位,數(shù)據(jù)右對齊3 小于 7,因此表達式 ab 不成立,因此不執(zhí)行t=a;a=b;b=t;3 大于 1,因此表達式 ac 成立,則

19、執(zhí)行t=a;a=b;b=t;。第一句,將 a 中的 3 拷貝,粘貼到t 中;第二句,將 c 中的 1 拷貝,粘貼到 a 中,覆蓋掉先前的 3;第三句。將 t 中的 3 拷貝到 c 中,覆蓋掉 c 中先前的 1.執(zhí)行完復合語句后實現(xiàn)了a,c 元素的值的互換,a 為 1,c 為3, t 為 3,。7 大于 c 中的 3,因此 bc 成立,執(zhí)行則執(zhí)行t=b;b=c;c=t;,過程同上,執(zhí)行后 b 為 3, c為 7, t 為 7此時輸出 a,b,c 中的值為 1.00,2.00,7.005.#i nclude mai n () float c=3.0 , d=4.0;if ( cd ) c=5.0;

20、elseif ( c=d ) c=6.0;else c=7.0;printf (%.1fn ”c );運行結果為:7.0此題為 if.else.語句的嵌套,第二 if.else.作為第一個 if.else.語句 else 部分的復合語句。若表達式 cd 成立,則執(zhí)行 c=5.0;否則(表達式 cd 不成立)若表達式 c=d 成立,則執(zhí)行 c=6.0;否則,執(zhí)行 c=7.0;輸出 c 中的值3.0 小于 4.0,因此表達式 cd 不成立,執(zhí)行第二個ifelse。3.0 不等于 4.0,因此表達式 c=d 不成立,執(zhí)行 c=7.0,將 7.0 賦給 c,覆蓋掉 c 中的 3.0 , 此時 c 中的

21、值為 7.0輸出此時的 c 中的值6.#i nclude main () int m;scan f(%d, & m);if (m = 0) if (m%2 = 0)prin tf(%d is a positive evenn, m);elseprin tf(%d is a positive oddn, m);else if (m % 2 = 0)prin tf(%d is a negative evenn, m);elseprintf(%d is a negative oddn, m);若鍵入9 則運行結果為:-9 is a negative odd7.#i nclude main (

22、) int num=0 ;while(num=2) num+; printf(%dn,num) ; 運行結果為:123詳見教材 p115 循環(huán)結構當循環(huán)條件 num=2 成立的時候,執(zhí)行循環(huán)體 num+ ; printf(%dn,num)循環(huán)初值 num 為 0;循環(huán)條件 num=2 成立第 1 次循環(huán):執(zhí)行 num+;即將 num 中的值加 1,執(zhí)行后 num 為 1 ;執(zhí)行 printf(%dn,num);在屏幕上輸出 num 中的值,即輸出 1,之后換行此時 num 中的值為 1,循環(huán)條件 num=2 成立;中的語句。第 2 此循環(huán):執(zhí)行 num+;即將 num 中的值加 1,執(zhí)行后 n

23、um 為 2 ;執(zhí)行 printf(%dn,num);在屏幕上輸出 num 中的值,即輸出 2,之后換行此時 num 中的值為 2,循環(huán)條件 num=2 成立第 3 此循環(huán):執(zhí)行 num+;即將 num 中的值加 1,執(zhí)行后 num 為 3 ;執(zhí)行 printf(%dn,num);在屏幕上輸出 num 中的值,即輸出 3,之后換行此時 num 中的值為 3,循環(huán)條件 num=2 不成立,結束循環(huán)。8.#i nclude mai n() int sum=10 ,n=1;while( n3)sum=su m-n;n+; printf( %d,%d ”,n,sum);運行結果為:3,7當循環(huán)條件 *

24、3 成立的時候,執(zhí)行循環(huán)體 sum=sum-n;n+; 中的語句。循環(huán)初值 sum 為 10,n 為 1;循環(huán)條件 n3 成立第 1 次循環(huán):執(zhí)行 sum=sum-n=10-仁 9;執(zhí)行 n+,即將 n 中的值加 1,執(zhí)行后 n 為 2 ;此時 n 中的值為 2, sum 中的值為 9,循環(huán)條件 n3 成立,繼續(xù)執(zhí)行循環(huán)第 2 次循環(huán):執(zhí)行 sum=sum-n=9-2=7;執(zhí)行 n+,即將 n 中的值加 1,執(zhí)行后 n 為 3 ;輸出此時 n,sum 中的值,即為 3,7。需要注意,在 printf( %d,%d ”,n,sum);據(jù)彼此間用逗號間隔,因此結果的兩個數(shù)據(jù)間一定要有逗號9.#i

25、nclude main () int nu m,c;scan f(%d, &n um);do c=nu m%10;prin tf(%d,c);while( nu m/=10)0);prin tf(n ”);從鍵盤輸入 23,則運行結果為:32詳見教材 p117 循環(huán)結構;p60 復合的賦值運算符中要求輸出的數(shù)do while(表達式);先無條件執(zhí)行循環(huán)體,再判斷循環(huán)條件。注意while (表達式)后有分號定義整型變量 num,c;為 num 賦一個整型值;執(zhí)行c=num%10;printf(%d,c);直到循環(huán)條件(num/=10)0 不成立;輸出換行已知為 num 賦值 23第 1

26、次執(zhí)行循環(huán)體執(zhí)行 c=num%10=23%10=3;執(zhí)行 printf(%d,c);輸出 3判斷循環(huán)條件 num/=10 等價于 num=num/10; 因此 num=23/10=2, 2 大于 0,因此循環(huán)條件(num/=10)0 成立,繼續(xù)執(zhí)行循環(huán)體。執(zhí)行完第1 次循環(huán)時,num 為 2,c 為 3第 2 次執(zhí)行循環(huán)體執(zhí)行 c=2%10=2;執(zhí)行 printf(%d,c);再輸出 2判斷循環(huán)條件 num=2/10=0,0 等于 0,因此循環(huán)條件(num/=10)0 不成立。結束循環(huán)10#i nclude main () int s=0,a=5 ,n;scan f(%d,&n);do

27、 s+=1;a=a-2; while(a!=n);printf(%d , %dn,s,a);若輸入的值 1,運行結果為:2,1詳見教材 p117 循環(huán)結構;p60 復合的賦值運算符執(zhí)行 s+=1;a=a-2; 直到循環(huán)條件 a!=n 不成立;已知為 n 賦值 1,s 為 0, a 為 5第 1 次執(zhí)行循環(huán)體執(zhí)行 s+=1;等價于 s=s+1=0+1執(zhí)仃 a=a-2; a=5-2=3判斷循環(huán)條件,3 不等于 1,因此循環(huán)條件 a!=n 成立,繼續(xù)執(zhí)行循環(huán)體。執(zhí)行完第 1 次循環(huán)時,s 為 1 , a 為 3第 2 次執(zhí)行循環(huán)體執(zhí)行 s+=1;等價于 s=s+1=1+1=2執(zhí)行 a=a-2; a=

28、3-2=1判斷循環(huán)條件,1 等于 1,因此循環(huán)條件 a!=n 不成立,結束循環(huán)。執(zhí)行完第 2 次循環(huán)時,s 為 2 , a 為 1輸出此時 s,a 中的值,結果為 2,111 .#i nclude stdio.hmain ()char c;c=getchar();while(c!=?)putchar(c); c=getchar(); 如果從鍵盤輸入 abcde ? fgh (回車)運行結果為:abcde12 .#i nclude main () char c;while(c=getchar()!= if( A =c&c= Z putchar(c);else if( a =c&c

29、= Z) putchar(c-32); 當輸入為 ab*AB%cd#CD$ 時,運行結果為: ABABCDCD13.#i nclude main () int x, y =0;for(x=1;x=10)break;y=y+x;printf( %d %d ”y,x);運行結果為:105詳見教材 p120 for 語句詳見教材 p126128 break , continue 語句for(表達式 1;表達式 2;表達式 3)(1)先求解表達式 1(2)求解表達式 2,若其值為真,執(zhí)行循環(huán)體,然后執(zhí)行(3).若為假,則結束循環(huán),轉(zhuǎn)到(5)第 3 次循環(huán)(3)求解表達式 3(4)轉(zhuǎn)回上面(2)繼續(xù)執(zhí)行

30、(5)循環(huán)結束,執(zhí)行 for 語句下面的一個語句break,跳出循環(huán)體;continue,結束本次循環(huán)(第 i 次循環(huán)),繼續(xù)執(zhí)行下一次循環(huán)(第 i+1 次循環(huán))此題 表達式 1 為 x=1,表達式 2 (循環(huán)條件)為 x=10,表達式 3 為 x+初值 x 為 1,y 為 0,循環(huán)條件(即表達式 2)x=10 成立,進入循環(huán)體第 1 次循環(huán)執(zhí)行 if 語句。0 小于 10,if 語句的條件表達式不成立,不執(zhí)行 break;執(zhí)行 y=y+x; y=0+仁 1轉(zhuǎn)向表達式 3,執(zhí)行 x+,x=x+1=1 + 1=2。循環(huán)條件 x=10 成立,進入第 2 次循環(huán)第 2 次循環(huán)執(zhí)行 if 語句。1 小

31、于 10,if 語句的條件表達式不成立,不執(zhí)行 break;執(zhí)行 y=y+x; y=1+2=3轉(zhuǎn)向表達式 3,執(zhí)行 x+,x=x+1=2+1=3。循環(huán)條件 x=10 成立,進入第 3 次循環(huán)執(zhí)行 if 語句。3 小于 10,if 語句的條件表達式不成立,不執(zhí)行 break;default: printf(%sn ”,other ”);執(zhí)行 y=y+x; y=3+3=6轉(zhuǎn)向表達式 3,執(zhí)行 x+,x=x+1=3+1=4。循環(huán)條件 x=10 成立,進入第 4 次循環(huán)第 4 次循環(huán)執(zhí)行 if 語句。6 小于 10, if 語句的條件表達式不成立,不執(zhí)行 break;執(zhí)行 y=y+x; y=6+4=1

32、0轉(zhuǎn)向表達式 3,執(zhí)行 x+,x=x+1=4+1=5。循環(huán)條件 x=10 成立,進入第 5 次循環(huán)第 5 次循環(huán)執(zhí)行 if 語句。10 等于 10,if 語句的條件表達式成立,執(zhí)行break,跳出循環(huán)。從 break 跳出至 for 語句的下一條語句。執(zhí)行printf( %d %d ”,y,x);輸出當前的 y 與 x.結果為 10514.#in cludemai n() char ch;ch=getchar();switch(ch) case A printf( %c ”,A);case B : printf( %c”, break; 當從鍵盤輸入字母 A 時,運行結果為:AB詳見教材 p1

33、03 , switch 語句switch (表達式) case 常量 1 :語句 1case 常量 2 :語句 2IIIIIIIIIcase 常量 n :語句 ndefault :語句 n+1其中表達式,常量 1,,常量 n 都為整型或字符型case 相當于給出執(zhí)行程序的入口和起始位置,若找到匹配的常量,則從此處開始往下執(zhí)行程序,不再匹配常量,直至遇到break 或 switch 結束本題過程:首先從鍵盤接收一個字符并將其放在變量 ch 中。執(zhí)行 switch 語句。Switch 后面的條件表達式為ch,因此表達式的值即為字符用字符A依次與下面的 case 中的常量匹配。與第 1 個 case

34、 后的常量匹配,則從其后的語句開始往下執(zhí)行程序(在執(zhí)行過程中不再進行匹配。)因此先執(zhí)行 printf( %c”,A),屏幕上輸出 A;再往下繼續(xù)執(zhí)行 printf( %c”,B),default: printf(%sn ”,other ”);屏幕上輸出 B;再繼續(xù)執(zhí)行 break ,此時跳出 switch 語句。15.#i nclude mai n() int a=1,b=0 ;scanf( %d ”&a);switch(a) case 1: b=1 ; break ;case 2: b=2 ; break ;default : b=10 ; printf(%d , b);若鍵盤輸入

35、5,運行結果為:10本題過程:首先用 scanf 函數(shù)為變量 a 賦值為 5。執(zhí)行 switch 語句。switch 后面的條件表達式為a,因此表達式的值即為 5.用 5 依次與下面 case 中的常量匹配。沒有找到匹配的常量,因此兩個case 后的語句都不執(zhí)行。執(zhí)行default 后面的語句 b=10 ;將 10 賦給變量 b。輸出變量 b,結果為 1016.#in elude mai n()_ char grade= Cswitch(grade)case :printf( 90-100n ”;case B :printf( 80-90n ”;case C :printf( 70-80n ”

36、;case D :printf( 60-70n ”;break;case E :printf( 60n ”;default : printf(error!n ”;運行結果為:70-8060-70本題過程:首先從鍵盤接收一個字符C并將其放在變量 grade 中。執(zhí)行 switch 語句。switch 后面的條件表達式為grade,因此表達式的值即為字符字符依次與下面的 case 中的常量匹配。第1次循環(huán)與第 3 個 case 后的常量匹配,則從其后的語句開始往下執(zhí)行程序(在執(zhí)行過程中不再進行匹配。)因此先執(zhí)行 printf( 70-80n ”);,屏幕上輸出70-80,并換行;再往下繼續(xù)執(zhí)行pr

37、intf( 60-70n ”),屏幕上輸出 60-70,并換行;再繼續(xù)執(zhí)行 break,此時跳出 switch 語句。17.#i nclude main () int y=9;for(;y0;y-)if(y%3=0) printf(%d ”,- -y);運行結果為:852詳見教材 p53,自增自減符號 此題表達式 1 被省略,表達式 2 (循環(huán)條件)為 y0,表達式 3 為 y-初值 y 為 9,循環(huán)條件(即表達式 2)y0 成立,進入循環(huán)體第6次循環(huán)執(zhí)行 if 語句。9%3=0 , if 語句的條件表達式成立,執(zhí)行 printf(%d ,- -y),即 y 先自減 1變?yōu)?8,然后在輸出,因

38、此屏幕上輸出8轉(zhuǎn)向表達式 3,執(zhí)行 y-, y=y-仁 8-仁 7。循環(huán)條件 y0 成立,進入第 2 次循環(huán)第 2 次循環(huán)執(zhí)行 if 語句。7%3 不為 0,if 語句的條件表達式不成立,不執(zhí)行 printf(%d ”,- -y) 轉(zhuǎn)向表達式 3,執(zhí)行 y-,y=y-1=7-1=6。循環(huán)條件 y0 成立,進入第 3 次循環(huán)第 3 次循環(huán)執(zhí)行 if 語句。6%3=0 ,if 語句的條件表達式成立,執(zhí)行 printf(%d ”,- -y),即 y 先自減 1變?yōu)?5,然后在輸出,因此屏幕上輸出5轉(zhuǎn)向表達式 3,執(zhí)行 y-,y=y-1=5-1=4。循環(huán)條件 y0 成立,進入第 4 次循環(huán)第 4 次循

39、環(huán)執(zhí)行 if 語句。4%3 不為 0,if 語句的條件表達式不成立,不執(zhí)行 printf(%d ”,- -y)轉(zhuǎn)向表達式 3,執(zhí)行 y-,y=4-仁 3。循環(huán)條件 y0 成立,進入第 5 次循環(huán)第 5 次循環(huán)執(zhí)行 if 語句。3%3=0 ,if 語句的條件表達式成立,執(zhí)行 printf(%d ”,- -y),即 y 先自減 1變?yōu)?2,然后在輸出,因此屏幕上輸出2轉(zhuǎn)向表達式 3,執(zhí)行 y-, y=y-仁 2-仁 1。循環(huán)條件 y0 成立,進入第 5 次循環(huán)執(zhí)行 if 語句。1%3 不為 0, if 語句的條件表達式不成立,不執(zhí)行printf(%d ”,- -y)轉(zhuǎn)向表達式 3,執(zhí)行 y-,y=

40、1-1=0。循環(huán)條件 y0 不成立,循環(huán)結束。18.#i nclude main () int i,sum=0; i=1;do sum=sum+i; i+; while(i=10); printf( %d”,sum);運行結果為:5519.#in clude #defi ne N 4main () int i;int x1=1,x2=2;prin tf(n);for(i=1;i=N;i+) prin tf(%4d%4d,x1,x2);if(i%2=0)prin tf(n ”);x1=x1+x2;x2=x2+x1;運行結果為:1235813 2134此題 首先為整型變量賦初值x1=1,x2=2表

41、達式 1 為 i=1,表達式 2 (循環(huán)條件)為 i=N 即 i=4,表達式 3 為 i+循環(huán)變量初值 i 為 1,循環(huán)條件(即表達式 2)inprinff(=%4d%4d=xnif函目。2%2UUO-if函孚辛注日nprinff5八福nX1UX1+X2U3+5UO?兵肆X甘孚血mmR8nx2HX2+x H5+8巴3可淌決M3 當ni+iR3。武孚辛AH4注曰BM3資武孚nprinff(=%4d%4d=xnXux+x2u8+3u2r兵肆xl甘孚血mmR2X2UX2+XU2+3U34。nprinff(=%4d%4d=xnif函目。 4%2UUO-if函孚辛注日nprinff5 八福X1UX1+X

42、2U21+34U55八兵肆XV-廿孚血口煨5X2UX2+X1H34+55H89可淌決M3 當ni+一比5。武孚辛AH4孑注冃帶沼武孚運行結果為:#in elude mai n() int x, y;for(x=30, y=0; x=10, y10; x-, y+) x/=2, y+=2;printf( x=%d,y=%dn ”x,y);運行結果為:x=0,y=1221.#i nclude #defi ne N 4mai n() int i,j;for(i=1;i=N;i+) for(j=1;ji;j+)printf(” );prin tf(*);prin tf(n);詳見教材 P41 符號常量

43、用宏處理指令定義符號常量N 為 4,在編譯過程中,遇到 N 即視為整數(shù) 4。外層 for 循環(huán),表達式 1 為 i=1,表達式 2 (循環(huán)條件)為 i=N,表達式 3 為 i+內(nèi)層 for 循環(huán),表達式 1 為 j=1,表達式 2 (循環(huán)條件)為 ji, 表達式 3 為 j+首先計算外層循環(huán)的表達式1,i 為 1,使得循環(huán)條件 i=4 成立,進入外層 for 循環(huán)體外層 for 循環(huán)第 1 次 此時 i 為 1內(nèi)層循環(huán) j=1,使得循環(huán)條件 ji 不成立,因此不執(zhí)行內(nèi)層循環(huán)體(不輸出空格)執(zhí)行 printf(*);執(zhí)行 printf(n);換行至此外層循環(huán)體執(zhí)行完, 計算外層循環(huán)的表達式 3

44、,i+,此時 i 為 2使得循環(huán)條件 i=4成立,再次進入外層 for 循環(huán)體外層 for 循環(huán)第 2 次 此時 i 為 2內(nèi)層循環(huán) j=1,使得循環(huán)條件 ji 成立第 1 次執(zhí)行內(nèi)層循環(huán)體printf(” );執(zhí)行內(nèi)層循環(huán)表達式3, j+為 2,ji 不成立,跳出內(nèi)層循環(huán)執(zhí)行 printf(*);執(zhí)行 printf(n);換行至此外層循環(huán)體執(zhí)行完, 計算外層循環(huán)的表達式3, i+,此時 i 為 3.使得循環(huán)條件成立,進入外層 for 循環(huán)體外層 for 循環(huán)第 3 次 此時 i 為 3內(nèi)層循環(huán) j=1,使得循環(huán)條件 ji 成立第 1 次執(zhí)行內(nèi)層循環(huán)體printf(” );執(zhí)行內(nèi)層循環(huán)表達式3

45、,j+為 2, ji 成立,再次執(zhí)行內(nèi)層循環(huán)第 2 次執(zhí)行內(nèi)層循環(huán)體printf(” );執(zhí)行內(nèi)層循環(huán)表達式3, j+為 3,ji 不成立,跳出內(nèi)層循環(huán)執(zhí)行 printf(*);執(zhí)行 printf(n);換行至此外層循環(huán)體執(zhí)行完, 計算外層循環(huán)的表達式3,i+,此時 i 為 4.使得循環(huán)條件成立,進入外層 for 循環(huán)體外層 for 循環(huán)第 4 次 此時 i 為 4內(nèi)層循環(huán) j=1,使得循環(huán)條件 ji 成立第 1 次執(zhí)行內(nèi)層循環(huán)體printf(” );執(zhí)行內(nèi)層循環(huán)表達式3,j+為 2, ji 成立,再次執(zhí)行內(nèi)層循環(huán)i=4i=4第 2 次執(zhí)行內(nèi)層循環(huán)體printf();852執(zhí)行內(nèi)層循環(huán)表達式3

46、, j+為 3, ji 成立,再次執(zhí)行內(nèi)層循環(huán)第 3 次執(zhí)行內(nèi)層循環(huán)體printf(” ”);執(zhí)行內(nèi)層循環(huán)表達式3, j+為 4, ji 不成立,跳出內(nèi)層循環(huán)執(zhí)行 printf(*);執(zhí)行 printf(n);換行至此外層循環(huán)體執(zhí)行完, 計算外層循環(huán)的表達式3 ,i+,此時 i 為 5使得循環(huán)條件 i=4不成立,跳出外層 for 循環(huán)體數(shù)組1.#i nclude main () int i, a10;for(i=9;i=0;i-)ai=10-i;printf( %d%d%d”a2,a5,a8);運行結果為:計算表達式 3,即 i-,i 為 4,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 6 次

47、循環(huán)詳見 p143-146. 例題 6.1 一定看懂!首先定義整型變量 i,整型數(shù)組 a, a 的長度為 10,即 a 中包含 10 個整型元素(整型變量)執(zhí)行 for 循環(huán)語句 初值 i=9,使得循環(huán)條件 i=0 成立,執(zhí)行循環(huán)體 第 1 次循環(huán)執(zhí)行 ai=10-i 等價于 a9=10-9=1第 2 次循環(huán)執(zhí)行 ai=10-i 等價于 a8=10-8=2計算表達式 3,即 i-, i 為 7,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 3 次循環(huán)執(zhí)行 ai=10-i 等價于 a7=10-7=3計算表達式 3,即 i-,i 為 6,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 4 次循環(huán)執(zhí)行

48、 ai=10-i 等價于 a6=10-6=4計算表達式 3,即 i-,i 為 5,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 5 次循環(huán)執(zhí)行 ai=10-i 等價于 a5=10-5=5執(zhí)行 ai=10-i 等價于 a4=10-4=6計算表達式 3,即 i-, i 為 8,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體for (i=5; i=0 ; i-)計算表達式 3,即 i-, i 為 3,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體 第 7 次循環(huán)執(zhí)行 ai=10-i 等價于 a3=10-3=7計算表達式 3,即 i-,i 為 2,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體 第 8 次循環(huán)執(zhí)仃

49、ai=10-i 等價于 a2=10-2=8計算表達式 3,即 i-, i 為 1,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 9 次循環(huán)執(zhí)行 ai=10-i 等價于 a1=10-1=9第 10 次循環(huán)執(zhí)行 ai=10-i 等價于 a0=10-0=10計算表達式 3,即 i-, i 為-1,使得循環(huán)條件 i=0 不成立,跳出循環(huán)體2.#in elude main () int i,a 6;for (i=0; i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 6 次循環(huán)運行結果為:首先定義整型變量 i,整型數(shù)組 a, a 的長度為 6,即 a 中包含 6 個整型元素(整型變量)執(zhí)行第一個 for 循環(huán)語句初值 i

50、=0,使得循環(huán)條件 i6 成立,執(zhí)行循環(huán)體第 1 次循環(huán)執(zhí)行 ai= i等價于 a0=0計算表達式3,即 i+, i 為使得循環(huán)條件i6 成立,繼續(xù)執(zhí)行循環(huán)體第 2 次循環(huán)執(zhí)行 ai= i等價于 a1=1計算表達式3,即 i+, i 為使得循環(huán)條件i6 成立,繼續(xù)執(zhí)行循環(huán)體第 3 次循環(huán)執(zhí)行 ai= i等價于 a2=2計算表達式3,即 i+, i 為使得循環(huán)條件i6 成立,繼續(xù)執(zhí)行循環(huán)體第 4 次循環(huán)執(zhí)行 ai= i等價于 a3=3計算表達式3,即 i+, i 為使得循環(huán)條件i6 成立,繼續(xù)執(zhí)行循環(huán)體第 5 次循環(huán)執(zhí)行 ai= i等價于 a4=4計算表達式3,即 i+, i 為使得循環(huán)條件i6

51、 成立,繼續(xù)執(zhí)行循環(huán)體計算表達式 3,即 i+ , i 為 6,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 6 次循環(huán)執(zhí)行 ai= i 等價于 a5=5執(zhí)行第二個 for 循環(huán)語句初值 i=5,使得循環(huán)條件 i=0 成立,執(zhí)行循環(huán)體第 1 次循環(huán)執(zhí)行 printf(%3d,ai);即輸出 a5的值計算表達式 3,即 i-,i 為 4,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 2 次循環(huán)執(zhí)行 printf(%3d,ai);即輸出 a4的值計算表達式 3,即 i-,i 為 3,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 3 次循環(huán)執(zhí)行 printf(%3d,ai);即輸出 a3的值計算表達式 3

52、,即 i-,i 為 2,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 4 次循環(huán)執(zhí)行 printf(%3d,ai);即輸出 a2的值計算表達式 3,即 i-,i 為 1,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 5 次循環(huán)執(zhí)行 printf(%3d,ai);即輸出 a1的值執(zhí)行 printf(%3d,ai);即輸出 a0的值計算表達式 3,即 i+ , i 為 6,使得循環(huán)條件i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 6 次循環(huán)計算表達式 3,即 i-, i 為 6,使得循環(huán)條件 i=0 不成立,結束循環(huán)3.#i nclude mai n() int i,k,a10,p3;k=5 ;for(i=0 ;

53、i10 ; i+)ai=i ;for(i=0 ; i3; i+)pi=ai*(i+1);for(i=0 ; i3; i+)k+=pi*2 ;printf(%dn,k);運行結果為:21首先定義整型變量 i,k,整型數(shù)組 a, a 的長度為 10,整型數(shù)組 p, p 的長度為 3k 初值為 5第一個 for 循環(huán)語句為數(shù)組 a 進行初始化執(zhí)行完第一個 for 語句后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9(循環(huán)過程略)第二個 for 循環(huán)語句為數(shù)組 p 進行初始化 初值 i=0,使得循環(huán)條件 i3 成立,執(zhí)行循環(huán)體 第 1 次循環(huán)執(zhí)行

54、Pi=ai*(i+1);即 p0=a0*(0+1)=a0=0計算表達式 3,即 i+, i 為 1,使得循環(huán)條件 第 2次循環(huán)執(zhí)行 pi=ai*(i+1); 即 p1=a1*(1+1)=a2=2計算表達式 3,即 i+, i 為 2,使得循環(huán)條件 第 3次循環(huán)執(zhí)行 pi=ai*(i+1); 即 p2=a2*(2+1)=a6=6計算表達式 3,即 i+, i 為 3,使得循環(huán)條件i3 成立,繼續(xù)執(zhí)行循環(huán)體i3 成立,繼續(xù)執(zhí)行循環(huán)體i3 不成立,結束循環(huán)第三個 for 循環(huán)語句初值 i=0,使得循環(huán)條件 i3 成立,執(zhí)行循環(huán)體 第 1 次循環(huán)執(zhí)行 k+=pi*2;即 k=5+p0*2=5+0=5計

55、算表達式 3,即 i+, i 為 1,使得循環(huán)條件 第2 次循環(huán)執(zhí)行 k+=pi*2;即 k=5+p1*2=5+2*2=9計算表達式 3,即 i+, i 為 2,使得循環(huán)條件 第1 次循環(huán)i3 成立,繼續(xù)執(zhí)行循環(huán)體i3 成立,繼續(xù)執(zhí)行循環(huán)體執(zhí)行 k+=pi*2;即 k=9+p2*2=9+6*2=21n20=0n21=0n22=0 x20=7x21=8x22=9計算表達式 3,即 i+ , i 為 3,使得循環(huán)條件 i3 不成立,結束循環(huán)4.#i nclude int m33=1,2,3;int n33=1,2 ,3;mai n() printf( %d, ”, m10+n00); printf( %dn ”,m01+n10);運行結果為:3,0詳見教材 P149152 , 圖 6.7 看懂!首先定義整型二維數(shù)組m,m 為 3 行,3 列的二維矩陣,并對其以行的形式初始化m00=1m01=0m12=0m10=2m11=0m22=0m20=

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論