(完整word版)大學C語言期末考試練習題集(帶詳解答案解析)_第1頁
(完整word版)大學C語言期末考試練習題集(帶詳解答案解析)_第2頁
免費預覽已結束,剩余59頁可下載查看

下載本文檔

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

文檔簡介

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

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

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

4、3,b=4 ;則條件表達式abook line#His.age選項 B 中的,$,選項 D 中 ”,”# ”,”,” ”-”不滿足(1); 選項 C 中的 while 為關鍵字,不滿足( 3)&下列四組字符串中都可以用作C 語言程序中的標識符的是(A )。9.C 語言中的簡單數據類型包括(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 是指向一維數組的指針B) p 是指向函數的指針,該函數返回一 int 型數據C) p 是指向 int 型數據的指針 /指針的定義教材 P223D) p 是函數名,該函數返回一指向 int 型數據的指針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,則在內存中為i 分配空間,因此 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 所指向對象 n 的內容,即一個整數;*q 表示 q 所指向對象的內容,由于 在定義 q 時為其初始化,將 p 中 n 的地址給 q,因此 p 中存放 n 的地址,*q 表示 q 所指向 對象 n 的內容.因此*p=*q相當于 n=n;選項 C,n=*q 等價于 n=n;選項 D,p 中只能存放地址,不能將 n 中的整數值賦給 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 是數組名,不是指針變量名,因此不可用*標注數組名 a選項 C, a 是數組名,數組名就是地址,無需再用地址符號。而且在定義指針變量p 時,應在變量名前加*,標明 p 是指針變量選項 D , a 是數組名,數組名就是地址,無需再用地址符號。39. 若有說明語句“ht a5,*p=a; ”則對數組元素的正確引用是(C )。A.apB.paC.*(p+2)D.p+2首先定義一個整型數組a, a 的長度為 5,然后定義一個指針變量p,并同時對 p 進行初始化, 將數組 a 的地址賦給 p。 因此此時 p 中存放的數組 a 的首地

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

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

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

13、 y C)x 小于 yD)以上答案都不對C 語言中,字符串后面需要一個結束標志位0,通常系統會自動添加。對一維數組初始化時可采用字符串的形式(例如本題數組 x),也可采用字符集合的形式(例如本題數組 y)。在以字符串形式初始化時,數組x 不盡要存儲字符串中的字符,還要存儲字符串后的結束標志位,因此數組x 的長度為 6;在以字符集合形式初始化時,數組y,僅存儲集合中的元素,因此數組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 符號的優先級=表示判斷符號兩邊的值是否相等;=表示將符號右邊的值賦給左邊的變量本題考點是選擇結構3 種基本形式的第二種選擇結構三種一般形式中的語句”皆為復合語句,復合語句要用 括起來,只有當復合語句中只包括一條語句時可以省略 ,此題即如此,因此兩個 printf 操作沒有加 若 c=a+b 成立,則執行 printf(yesn);一共包含了兩個選擇結構(兩個if 語句)否則(即 c=a+b 不成立),執行 printf(non);+的優先級高于=,因此先算

15、a+b,值為 4,表達式 5=4 不成立,因此執行 即輸出字符串 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 成立,則執行 m

16、in=b;若 minc 成立,則執行 min=c;輸出 min 中的值12 大于-34,第一個 if 語句的表達式成立,因此執行 min=b;執行后 min 中的值被更新為-34.-34 小于 56,第二個 if 語句的表達式不成立,因此不執行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遇到選擇結構,首先要明確條件表達式成立時執行哪些操作。本題中

17、,第一個 if 語句,其后的復合語句沒有大括號 ,說明復合語句中只包含一條語句, 進而省略了 。內層的 ifelse是選擇結構的第二種基本形式,在結構上視為一條語句。因此內層的if.else作為第一個if 語句的復合語句。若表達式 xy 成立,則繼續判斷若 y=0 ),執行 z=z+1;輸出 z2-1,表達式 xy 不成立,因此不執行內層的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 數據的輸出形式本題包含了 3 個 if 語句,每個 if 語句后的 都不可省略,因為每個 中都包含了多條語句若表達式 ab 成立,則執行t=a;a=b;b=t;若表達式 ac 成立,則執行t=a;a=c;c=t;若表達式 bc 成立,則執行t=b;b=c;c=t;輸出 a,b,c 中的值,要求輸出的每個數據寬度為5 個空格,小數部分保留2 位,數據右對齊3 小于 7,因此表達式 ab 不成立,因此不執行t=a;a=b;b=t;3 大于 1,因此表達式 ac 成立,則

19、執行t=a;a=b;b=t;。第一句,將 a 中的 3 拷貝,粘貼到t 中;第二句,將 c 中的 1 拷貝,粘貼到 a 中,覆蓋掉先前的 3;第三句。將 t 中的 3 拷貝到 c 中,覆蓋掉 c 中先前的 1.執行完復合語句后實現了a,c 元素的值的互換,a 為 1,c 為3, t 為 3,。7 大于 c 中的 3,因此 bc 成立,執行則執行t=b;b=c;c=t;,過程同上,執行后 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 成立,則執行 c=5.0;否則(表達式 cd 不成立)若表達式 c=d 成立,則執行 c=6.0;否則,執行 c=7.0;輸出 c 中的值3.0 小于 4.0,因此表達式 cd 不成立,執行第二個ifelse。3.0 不等于 4.0,因此表達式 c=d 不成立,執行 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 循環結構當循環條件 num=2 成立的時候,執行循環體 num+ ; printf(%dn,num)循環初值 num 為 0;循環條件 num=2 成立第 1 次循環:執行 num+;即將 num 中的值加 1,執行后 num 為 1 ;執行 printf(%dn,num);在屏幕上輸出 num 中的值,即輸出 1,之后換行此時 num 中的值為 1,循環條件 num=2 成立;中的語句。第 2 此循環:執行 num+;即將 num 中的值加 1,執行后 n

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

24、3 成立的時候,執行循環體 sum=sum-n;n+; 中的語句。循環初值 sum 為 10,n 為 1;循環條件 n3 成立第 1 次循環:執行 sum=sum-n=10-仁 9;執行 n+,即將 n 中的值加 1,執行后 n 為 2 ;此時 n 中的值為 2, sum 中的值為 9,循環條件 n3 成立,繼續執行循環第 2 次循環:執行 sum=sum-n=9-2=7;執行 n+,即將 n 中的值加 1,執行后 n 為 3 ;輸出此時 n,sum 中的值,即為 3,7。需要注意,在 printf( %d,%d ”,n,sum);據彼此間用逗號間隔,因此結果的兩個數據間一定要有逗號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 循環結構;p60 復合的賦值運算符中要求輸出的數do while(表達式);先無條件執行循環體,再判斷循環條件。注意while (表達式)后有分號定義整型變量 num,c;為 num 賦一個整型值;執行c=num%10;printf(%d,c);直到循環條件(num/=10)0 不成立;輸出換行已知為 num 賦值 23第 1

26、次執行循環體執行 c=num%10=23%10=3;執行 printf(%d,c);輸出 3判斷循環條件 num/=10 等價于 num=num/10; 因此 num=23/10=2, 2 大于 0,因此循環條件(num/=10)0 成立,繼續執行循環體。執行完第1 次循環時,num 為 2,c 為 3第 2 次執行循環體執行 c=2%10=2;執行 printf(%d,c);再輸出 2判斷循環條件 num=2/10=0,0 等于 0,因此循環條件(num/=10)0 不成立。結束循環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 循環結構;p60 復合的賦值運算符執行 s+=1;a=a-2; 直到循環條件 a!=n 不成立;已知為 n 賦值 1,s 為 0, a 為 5第 1 次執行循環體執行 s+=1;等價于 s=s+1=0+1執仃 a=a-2; a=5-2=3判斷循環條件,3 不等于 1,因此循環條件 a!=n 成立,繼續執行循環體。執行完第 1 次循環時,s 為 1 , a 為 3第 2 次執行循環體執行 s+=1;等價于 s=s+1=1+1=2執行 a=a-2; a=

28、3-2=1判斷循環條件,1 等于 1,因此循環條件 a!=n 不成立,結束循環。執行完第 2 次循環時,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,若其值為真,執行循環體,然后執行(3).若為假,則結束循環,轉到(5)第 3 次循環(3)求解表達式 3(4)轉回上面(2)繼續執行

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

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

32、0轉向表達式 3,執行 x+,x=x+1=4+1=5。循環條件 x=10 成立,進入第 5 次循環第 5 次循環執行 if 語句。10 等于 10,if 語句的條件表達式成立,執行break,跳出循環。從 break 跳出至 for 語句的下一條語句。執行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 相當于給出執行程序的入口和起始位置,若找到匹配的常量,則從此處開始往下執行程序,不再匹配常量,直至遇到break 或 switch 結束本題過程:首先從鍵盤接收一個字符并將其放在變量 ch 中。執行 switch 語句。Switch 后面的條件表達式為ch,因此表達式的值即為字符用字符A依次與下面的 case 中的常量匹配。與第 1 個 case

34、 后的常量匹配,則從其后的語句開始往下執行程序(在執行過程中不再進行匹配。)因此先執行 printf( %c”,A),屏幕上輸出 A;再往下繼續執行 printf( %c”,B),default: printf(%sn ”,other ”);屏幕上輸出 B;再繼續執行 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 函數為變量 a 賦值為 5。執行 switch 語句。switch 后面的條件表達式為a,因此表達式的值即為 5.用 5 依次與下面 case 中的常量匹配。沒有找到匹配的常量,因此兩個case 后的語句都不執行。執行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 中。執行 switch 語句。switch 后面的條件表達式為grade,因此表達式的值即為字符字符依次與下面的 case 中的常量匹配。第1次循環與第 3 個 case 后的常量匹配,則從其后的語句開始往下執行程序(在執行過程中不再進行匹配。)因此先執行 printf( 70-80n ”);,屏幕上輸出70-80,并換行;再往下繼續執行pr

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

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

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

40、1-1=0。循環條件 y0 不成立,循環結束。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 (循環條件)為 i=N 即 i=4,表達式 3 為 i+循環變量初值 i 為 1,循環條件(即表達式 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 即視為整數 4。外層 for 循環,表達式 1 為 i=1,表達式 2 (循環條件)為 i=N,表達式 3 為 i+內層 for 循環,表達式 1 為 j=1,表達式 2 (循環條件)為 ji, 表達式 3 為 j+首先計算外層循環的表達式1,i 為 1,使得循環條件 i=4 成立,進入外層 for 循環體外層 for 循環第 1 次 此時 i 為 1內層循環 j=1,使得循環條件 ji 不成立,因此不執行內層循環體(不輸出空格)執行 printf(*);執行 printf(n);換行至此外層循環體執行完, 計算外層循環的表達式 3

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

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

46、, j+為 3, ji 成立,再次執行內層循環第 3 次執行內層循環體printf(” ”);執行內層循環表達式3, j+為 4, ji 不成立,跳出內層循環執行 printf(*);執行 printf(n);換行至此外層循環體執行完, 計算外層循環的表達式3 ,i+,此時 i 為 5使得循環條件 i=4不成立,跳出外層 for 循環體數組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,使得循環條件i=0 成立,繼續執行循環體第 6 次

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

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

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

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

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

52、,即 i-,i 為 2,使得循環條件i=0 成立,繼續執行循環體第 4 次循環執行 printf(%3d,ai);即輸出 a2的值計算表達式 3,即 i-,i 為 1,使得循環條件i=0 成立,繼續執行循環體第 5 次循環執行 printf(%3d,ai);即輸出 a1的值執行 printf(%3d,ai);即輸出 a0的值計算表達式 3,即 i+ , i 為 6,使得循環條件i=0 成立,繼續執行循環體第 6 次循環計算表達式 3,即 i-, i 為 6,使得循環條件 i=0 不成立,結束循環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,整型數組 a, a 的長度為 10,整型數組 p, p 的長度為 3k 初值為 5第一個 for 循環語句為數組 a 進行初始化執行完第一個 for 語句后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9(循環過程略)第二個 for 循環語句為數組 p 進行初始化 初值 i=0,使得循環條件 i3 成立,執行循環體 第 1 次循環執行

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

55、算表達式 3,即 i+, i 為 1,使得循環條件 第2 次循環執行 k+=pi*2;即 k=5+p1*2=5+2*2=9計算表達式 3,即 i+, i 為 2,使得循環條件 第1 次循環i3 成立,繼續執行循環體i3 成立,繼續執行循環體執行 k+=pi*2;即 k=9+p2*2=9+6*2=21n20=0n21=0n22=0 x20=7x21=8x22=9計算表達式 3,即 i+ , i 為 3,使得循環條件 i3 不成立,結束循環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 看懂!首先定義整型二維數組m,m 為 3 行,3 列的二維矩陣,并對其以行的形式初始化m00=1m01=0m12=0m10=2m11=0m22=0m20=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論