大學(xué)C語言期末考試練習(xí)題帶詳解答案_第1頁
大學(xué)C語言期末考試練習(xí)題帶詳解答案_第2頁
大學(xué)C語言期末考試練習(xí)題帶詳解答案_第3頁
大學(xué)C語言期末考試練習(xí)題帶詳解答案_第4頁
大學(xué)C語言期末考試練習(xí)題帶詳解答案_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

一、 單項(xiàng)選擇題1 ( A )是構(gòu)成 C 語言程序的基本單位。A、函數(shù) B、過程 C、子程序 D、子例程2C 語言程序從 C 開始執(zhí)行。A) 程序中第一條可執(zhí)行語句 B) 程序中第一個(gè)函數(shù)C) 程序中的 main 函數(shù) D) 包含文件中的第一個(gè)函數(shù)3、以下說法中正確的是( C ) 。A、C 語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行B、在 C 語言程序中,要調(diào)用的函數(shù)必須在 main( )函數(shù)中定義C、C 語言程序總是從 main( )函數(shù)開始執(zhí)行D、C 語言程序中的 main( )函數(shù)必須放在程序的開始部分4.下列關(guān)于 C 語言的說法錯(cuò)誤的是( B ) 。A) C 程序的工作過程是編輯、編譯、連接、運(yùn)行 B) C 語言不區(qū)分大小寫。C) C 程序的三種基本結(jié)構(gòu)是順序、選擇、循環(huán) D) C 程序從 main 函數(shù)開始執(zhí)行5.下列正確的標(biāo)識(shí)符是(C ) 。A.-a1 B.ai C.a2_i D.int t58 題為相同類型題考點(diǎn):標(biāo)識(shí)符的命名規(guī)則(1) 只能由字母、數(shù)字、下劃線構(gòu)成(2) 數(shù)字不能作為標(biāo)識(shí)符的開頭(3) 關(guān)鍵字不能作為標(biāo)識(shí)符選項(xiàng) A 中的“-” ,選項(xiàng) B 中“”與“”不滿足(1) ;選項(xiàng) D 中的 int 為關(guān)鍵字,不滿足(3)6下列 C 語言用戶標(biāo)識(shí)符中合法的是( B ) 。A)3ax B)x C)case D)-e2 E)union選項(xiàng) A 中的標(biāo)識(shí)符以數(shù)字開頭不滿足( 2) ;選項(xiàng) C,E 均為為關(guān)鍵字,不滿足(3) ;選項(xiàng) D 中的“-”不滿足(1) ;7下列四組選項(xiàng)中,正確的 C 語言標(biāo)識(shí)符是( C ) 。A) %x B) a+b C) a123 D) 123選項(xiàng) A 中的“%” ,選項(xiàng) B 中“+” 不滿足(1) ;選項(xiàng) D 中的標(biāo)識(shí)符以數(shù)字開頭不滿足(2)8、下列四組字符串中都可以用作 C 語言程序中的標(biāo)識(shí)符的是( A ) 。A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My-book line# His.age 選項(xiàng) B 中的“”, ”$” ,選項(xiàng) D 中“” , ”#”, ”.”, ”-”不滿足(1) ;選項(xiàng) C 中的 while 為關(guān)鍵字,不滿足(3)9.C 語言中的簡單數(shù)據(jù)類型包括(D ) 。A、整型、實(shí)型、邏輯型 B、整型、實(shí)型、邏輯型、字符型C、整型、字符型、邏輯型 D、整型、實(shí)型、字符型10.在 C 語言程序中,表達(dá)式 5%2 的結(jié)果是 C 。A)2.5 B)2 C)1 D)3詳見教材 P5253.%為求余運(yùn)算符,該運(yùn)算符只能對(duì)整型數(shù)據(jù)進(jìn)行運(yùn)算。且符號(hào)與被模數(shù)相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)% (-2)=-1;/為求商運(yùn)算符,該運(yùn)算符能夠?qū)φ汀⒆址?、浮點(diǎn)等類型的數(shù)據(jù)進(jìn)行運(yùn)算,5/2=211如果 int a=3,b=4;則條件表達(dá)式aage D) (*p).age33.設(shè)有如下定義:struck sk int a;float b;data;int *p;若要使 P 指向 data 中的 a 域,正確的賦值語句是 C A) p=&a; B) p=data.a; C) p=&data.a; D)*p=data.a;34.設(shè)有以下說明語句:typedef struct stu int a;float b; stutype;則下面敘述中錯(cuò)誤的是( D ) 。A、struct 是結(jié)構(gòu)類型的關(guān)鍵字 B、struct stu 是用戶定義的結(jié)構(gòu)類型 C、a 和 b 都是結(jié)構(gòu)成員名D、stutype 是用戶定義的結(jié)構(gòu)體變量名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下列不正確的定義是(A ) 。A. int *p=&i,i; B.int *p,i;Cint i,*p=&i; D.int i,*p;選項(xiàng) A 先定義一個(gè)整型指針變量 p,然后將變量 i 的地址賦給 p。然而此時(shí)還未定義變量 i 因此編譯器無法獲得變量 i 的地址。(A 與 C 對(duì)比,選項(xiàng) C 先定義變量 i,則在內(nèi)存中為 i 分配空間,因此 i 在內(nèi)存空間的地址就可以確定了;然后再定義 p,此時(shí)可以為 p 賦 i的地址,C 正確)37. 若有說明:int n=2,*p=&n,*q=p, 則以下非法的賦值語句是: (D )A)p=q B)*p=*q C)n=*q D)p=np,q 同為整型指針變量,二者里面僅能存放整型變量的地址。選項(xiàng) A,q 中為地址,因此可將此地址賦給 p選項(xiàng) B,*p 表示 p 所指向?qū)ο?n 的內(nèi)容,即一個(gè)整數(shù);*q 表示 q 所指向?qū)ο蟮膬?nèi)容,由于在定義 q 時(shí)為其初始化,將 p 中 n 的地址給 q,因此 p 中存放 n 的地址,*q 表示 q 所指向?qū)ο?n 的內(nèi)容.因此*p=*q 相當(dāng)于 n=n;選項(xiàng) C,n=*q 等價(jià)于 n=n;選項(xiàng) D,p 中只能存放地址,不能將 n 中的整數(shù)值賦給 p38有語句:int a10,;則 B 是對(duì)指針變量 p 的正確定義和初始化。A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;選項(xiàng) A,a 是數(shù)組名,不是指針變量名,因此不可用*標(biāo)注數(shù)組名 a選項(xiàng) C,a 是數(shù)組名,數(shù)組名就是地址,無需再用地址符號(hào)。而且在定義指針變量 p 時(shí),應(yīng)在變量名前加*,標(biāo)明 p 是指針變量選項(xiàng) D,a 是數(shù)組名,數(shù)組名就是地址,無需再用地址符號(hào)。39.若有說明語句“int a5,*p=a;”,則對(duì)數(shù)組元素的正確引用是 ( C )。A.ap B.pa C.*(p+2) D.p+2首先定義一個(gè)整型數(shù)組 a,a 的長度為 5,然后定義一個(gè)指針變量 p,并同時(shí)對(duì) p 進(jìn)行初始化,將數(shù)組 a 的地址賦給 p。因此此時(shí) p 中存放的數(shù)組 a 的首地址,即數(shù)組中第一個(gè)元素 a0的地址。對(duì)于數(shù)組元素下標(biāo)的引用(詳見 p144), 一般形式 數(shù)組名下標(biāo) 其中下標(biāo)為邏輯地址下標(biāo),從 0 開始計(jì)數(shù),方括號(hào)中的下標(biāo)可以是變量,可以是表達(dá)式,但結(jié)果一定要是整數(shù)。選項(xiàng) A,p 中存放的是地址,不是整數(shù),不能做數(shù)組元素的下標(biāo)選項(xiàng) B,a 是數(shù)組名,數(shù)組名就是地址,不是整數(shù),不能做數(shù)組元素的下標(biāo)選項(xiàng) C,(重點(diǎn)!詳見 p231234) p+2 表示指向同一數(shù)組中的下兩個(gè)元素的地址,當(dāng)前 p 指向 a0,則 p+2 表示 a2的地址,因此*(p+2) 表示 a2的內(nèi)容40. 有如下程序int a10=1,2,3,4,5,6,7,8,9,10,*P=a;則數(shù)值為 9 的表達(dá)式是 B A) *P+9 B) *(P+8) C) *P+=9 D) P+8(重點(diǎn)!詳見 p231234)首先定義一個(gè)整型數(shù)組 a,a 的長度為 5,然后定義一個(gè)指針變量 P,并同時(shí)對(duì) P 進(jìn)行初始化,將數(shù)組 a 的地址賦給 P。因此此時(shí) P 中存放的數(shù)組 a 的首地址,即數(shù)組中第一個(gè)元素 a0的地址。數(shù)組中 9 對(duì)應(yīng)的是 a8, 選項(xiàng) B,P+8 表示數(shù)組中后 8 個(gè)元素的地址,即 a8的地址。*(P+8)則表示該地址內(nèi)所存放的內(nèi)容,即 a8的值。選項(xiàng) A,*P 表示 P 所指向?qū)ο蟮膬?nèi)容,此時(shí) P 指向 a0, *P 即 a0的值 1. *P+9=1+9=10選項(xiàng) C,*P 表示 P 所指向?qū)ο蟮膬?nèi)容,此時(shí) P 指向 a0, *P 即 a0的值。因此*P+=9 即*P =*P+9, 等價(jià)于 a0=a0+9.選項(xiàng) D,P+8 表示數(shù)組中后 8 個(gè)元素的地址,即 a8的地址,而非 a8中的值。41. 在 C 語言中,以 D 作為字符串結(jié)束標(biāo)志A)n B) C) 0 D)0 42.下列數(shù)據(jù)中屬于“字符串常量”的是(A ) 。A.“a” B.ABC C.abc0 D.a若干個(gè)字符構(gòu)成字符串在 C 語言中,用單引號(hào)標(biāo)識(shí)字符;用雙引號(hào)標(biāo)識(shí)字符串選項(xiàng) B,C ,分別用和 標(biāo)識(shí)字符串選項(xiàng) D,標(biāo)識(shí)字符。43.已知 char x=hello, y=h,e,a,b,e;, 則關(guān)于兩個(gè)數(shù)組長度的正確描述是 B .A)相同 B)x 大于 y C)x 小于 y D)以上答案都不對(duì)C 語言中,字符串后面需要一個(gè)結(jié)束標(biāo)志位0 ,通常系統(tǒng)會(huì)自動(dòng)添加。對(duì)一維數(shù)組初始化時(shí)可采用字符串的形式(例如本題數(shù)組 x) ,也可采用字符集合的形式(例如本題數(shù)組 y) 。在以字符串形式初始化時(shí),數(shù)組 x 不盡要存儲(chǔ)字符串中的字符,還要存儲(chǔ)字符串后的結(jié)束標(biāo)志位,因此數(shù)組 x 的長度為 6;在以字符集合形式初始化時(shí),數(shù)組y,僅存儲(chǔ)集合中的元素,因此數(shù)組 y 長度為 5二、 讀程序基本輸入輸出及流程控制1.#include main() int a=1,b=3,c=5;if (c=a+b)printf(yesn);elseprintf(non);運(yùn)行結(jié)果為:no詳見教材 p89 選擇結(jié)構(gòu)詳見教材 p91 關(guān)系符號(hào)詳見附錄 D p378 符號(hào)的優(yōu)先級(jí)=表示判斷符號(hào)兩邊的值是否相等;=表示將符號(hào)右邊的值賦給左邊的變量本題考點(diǎn)是選擇結(jié)構(gòu) 3 種基本形式的第二種選擇結(jié)構(gòu)三種一般形式中的“語句”皆為復(fù)合語句,復(fù)合語句要用 括起來,只有當(dāng)復(fù)合語句中只包括一條語句時(shí)可以省略 ,此題即如此,因此兩個(gè) printf 操作沒有加 若 c=a+b 成立,則執(zhí)行 printf(yesn);否則(即 c=a+b 不成立) ,執(zhí)行 printf(non);+的優(yōu)先級(jí)高于=,因此先算 a+b,值為 4, 表達(dá)式 5=4 不成立,因此執(zhí)行 printf(non);即輸出字符串 no2. #include main() int a=12, b= -34, c=56, min=0;min=a;if(minb) min=b;if(minc) min=c;printf(min=%d, min);運(yùn)行結(jié)果為: min=-34詳見教材 p89 選擇結(jié)構(gòu)本題考點(diǎn)是選擇結(jié)構(gòu) 3 種基本形式的第一種一共包含了兩個(gè)選擇結(jié)構(gòu)(兩個(gè) if 語句)定義變量,并賦值 此時(shí) a=12, b= -34, c=56, min=0將 a 中值拷貝,賦給 min,覆蓋了 min 中的 0,此時(shí) min 中的值被更新為 12。若 minb 成立,則執(zhí)行 min=b;若 minc 成立,則執(zhí)行 min=c;輸出 min 中的值12 大于-34,第一個(gè) if 語句的表達(dá)式成立,因此執(zhí)行 min=b; 執(zhí)行后 min 中的值被更新為-34.-34 小于 56,第二個(gè) if 語句的表達(dá)式不成立,因此不執(zhí)行 min=c;最后輸出 min 中的值,為-34.3.#include main() int x=2,y= -1,z=5;if(x=0),執(zhí)行 z=z+1;輸出 z2-1,表達(dá)式 xmain() 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=t;printf(%5.2f,%5.2f,%5.2f,a,b,c);運(yùn)行結(jié)果為:1.00, 2.00, 7.00詳見教材 p72 數(shù)據(jù)的輸出形式本題包含了 3 個(gè) if 語句,每個(gè) if 語句后的 都不可省略,因?yàn)槊總€(gè) 中都包含了多條語句若表達(dá)式 ab 成立,則執(zhí)行t=a;a=b;b=t;若表達(dá)式 ac 成立,則執(zhí)行 t=a;a=c;c=t;若表達(dá)式 bc 成立,則執(zhí)行t=b;b=c;c=t;輸出 a,b,c 中的值,要求輸出的每個(gè)數(shù)據(jù)寬度為 5 個(gè)空格,小數(shù)部分保留 2 位,數(shù)據(jù)右對(duì)齊3 小于 7,因此表達(dá)式 ab 不成立,因此不執(zhí)行t=a;a=b;b=t;3 大于 1,因此表達(dá)式 ac 成立,則執(zhí)行t=a;a=b;b=t; 。第一句,將 a 中的 3 拷貝,粘貼到t 中;第二句,將 c 中的 1 拷貝,粘貼到 a 中,覆蓋掉先前的 3;第三句。將 t 中的 3 拷貝到 c 中,覆蓋掉 c 中先前的 1. 執(zhí)行完復(fù)合語句后實(shí)現(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此時(shí)輸出 a,b,c 中的值為 1.00, 2.00, 7.005#include main ( ) float c=3.0 , d=4.0;if ( cd ) c=5.0;else if ( c=d ) c=6.0;else c=7.0;printf ( “%.1fn”,c ) ;運(yùn)行結(jié)果為:7.0此題為 if.else.語句的嵌套,第二 if.else.作為第一個(gè) if.else.語句 else 部分的復(fù)合語句。若表達(dá)式 cd 成立,則執(zhí)行 c=5.0;否則(表達(dá)式 cd 不成立)若表達(dá)式 c=d 成立,則執(zhí)行 c=6.0;否則,執(zhí)行 c=7.0;輸出 c 中的值3.0 小于 4.0,因此表達(dá)式 cd 不成立,執(zhí)行第二個(gè) ifelse。3.0 不等于 4.0,因此表達(dá)式 c=d 不成立,執(zhí)行 c=7.0,將 7.0 賦給 c, 覆蓋掉 c 中的 3.0,此時(shí) c 中的值為 7.0輸出此時(shí)的 c 中的值6.#include main() int m;scanf(%d, &m);if (m = 0) if (m%2 = 0)printf(%d is a positive evenn, m);else printf(%d is a positive oddn, m); else if (m % 2 = 0) printf(%d is a negative evenn, m);else printf(%d is a negative oddn, m); 若鍵入9,則運(yùn)行結(jié)果為: -9 is a negative odd7. #include main() int num=0;while(nummain( ) int sum=10,n=1;while(nmain() int num,c;scanf(%d,&num);do c=num%10; printf(%d,c); while(num/=10)0);printf(n); 從鍵盤輸入 23,則運(yùn)行結(jié)果為:32詳見教材 p117 循環(huán)結(jié)構(gòu);p60 復(fù)合的賦值運(yùn)算符do while(表達(dá)式);先無條件執(zhí)行循環(huán)體,再判斷循環(huán)條件。注意 while(表達(dá)式)后有分號(hào)定義整型變量 num,c;為 num 賦一個(gè)整型值;執(zhí)行c=num%10; printf(%d,c); 直到循環(huán)條件(num/=10)0 不成立;輸出換行已知為 num 賦值 23第 1 次執(zhí)行循環(huán)體執(zhí)行 c=num%10=23%10=3;執(zhí)行 printf(%d,c);輸出 3判斷循環(huán)條件 num/=10 等價(jià)于 num=num/10; 因此 num=23/10=2, 2 大于 0,因此循環(huán)條件(num/=10)0 成立,繼續(xù)執(zhí)行循環(huán)體。執(zhí)行完第 1 次循環(huán)時(shí), 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 不成立。結(jié)束循環(huán)10#include main() int s=0,a=5,n;scanf(%d,&n);do s+=1; a=a-2; while(a!=n);printf(%d,%dn,s,a);若輸入的值 1,運(yùn)行結(jié)果為: 2,1 詳見教材 p117 循環(huán)結(jié)構(gòu);p60 復(fù)合的賦值運(yùn)算符執(zhí)行 s+=1; a=a-2; 直到循環(huán)條件 a!=n 不成立;已知為 n 賦值 1,s 為 0,a 為 5第 1 次執(zhí)行循環(huán)體執(zhí)行 s+=1;等價(jià)于 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)時(shí),s 為 1,a 為 3第 2 次執(zhí)行循環(huán)體執(zhí)行 s+=1;等價(jià)于 s=s+1=1+1=2執(zhí)行 a=a-2; a=3-2=1判斷循環(huán)條件,1 等于 1,因此循環(huán)條件 a!=n 不成立,結(jié)束循環(huán)。執(zhí)行完第 2 次循環(huán)時(shí),s 為 2,a 為 1輸出此時(shí) s,a 中的值,結(jié)果為 2,111#include stdio.h main() char c; c=getchar(); while(c!=?) putchar(c); c=getchar(); 如果從鍵盤輸入 abcde?fgh(回車)運(yùn)行結(jié)果為:abcde12#include main() char c;while(c=getchar()!=$) if(Amain() int x, y =0;for(x=1;x=10) break; y=y+x; printf(“%d %d”,y,x);運(yùn)行結(jié)果為:10 5詳見教材 p120 for 語句詳見教材 p126128 break,continue 語句for( 表達(dá)式 1;表達(dá)式 2;表達(dá)式 3)(1) 先求解表達(dá)式 1 (2) 求解表達(dá)式 2,若其值為真,執(zhí)行循環(huán)體,然后執(zhí)行 (3). 若為假,則結(jié)束循環(huán),轉(zhuǎn)到(5)(3) 求解表達(dá)式 3 (4) 轉(zhuǎn)回上面 (2)繼續(xù)執(zhí)行(5) 循環(huán)結(jié)束,執(zhí)行 for 語句下面的一個(gè)語句 break ,跳出循環(huán)體;continue, 結(jié)束本次循環(huán)(第 i 次循環(huán)) ,繼續(xù)執(zhí)行下一次循環(huán)( 第 i+1次循環(huán))此題 表達(dá)式 1 為 x=1,表達(dá)式 2(循環(huán)條件)為 xmain( ) char ch;ch=getchar( ); switch(ch) case A : printf(“%c”,A);case B : printf(“%c”,B); break;default: printf(“%sn”,”other”); 當(dāng)從鍵盤輸入字母 A 時(shí),運(yùn)行結(jié)果為: AB詳見教材 p103,switch 語句switch(表達(dá)式) case 常量 1 :語句 1 case 常量 2 :語句 2 case 常量 n :語句 n default : 語句 n+1 其中表達(dá)式,常量 1,常量 n 都為整型或字符型case 相當(dāng)于給出執(zhí)行程序的入口和起始位置,若找到匹配的常量,則從此處開始往下執(zhí)行程序,不再匹配常量,直至遇到 break 或 switch 結(jié)束本題過程:首先從鍵盤接收一個(gè)字符A并將其放在變量 ch 中。執(zhí)行 switch 語句。Switch 后面的條件表達(dá)式為 ch,因此表達(dá)式的值即為字符A. 用字符A依次與下面的 case 中的常量匹配。與第 1 個(gè) case 后的常量匹配,則從其后的語句開始往下執(zhí)行程序(在執(zhí)行過程中不再進(jìn)行匹配。 )因此先執(zhí)行 printf(“%c”,A),屏幕上輸出 A;再往下繼續(xù)執(zhí)行 printf(“%c”,B),屏幕上輸出 B;再繼續(xù)執(zhí)行 break, 此時(shí)跳出 switch 語句。15. #include main( ) 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);若鍵盤輸入 5,運(yùn)行結(jié)果為:10本題過程:首先用 scanf 函數(shù)為變量 a 賦值為 5。執(zhí)行 switch 語句。switch 后面的條件表達(dá)式為 a,因此表達(dá)式的值即為 5. 用 5 依次與下面 case 中的常量匹配。沒有找到匹配的常量,因此兩個(gè) case 后的語句都不執(zhí)行。執(zhí)行default 后面的語句 b=10;將 10 賦給變量 b。輸出變量 b,結(jié)果為 1016. #include main()_ char grade=C;switch(grade) case A: printf(“90-100n”);case B: printf(“80-90n”);case C: printf(“70-80n”);case D: printf(“60-70n”); break;case E: printf(“main() int y=9;for(;y0;y- -)if(y%3=0) printf(%d”,- -y); 運(yùn)行結(jié)果為:852詳見教材 p53,自增自減符號(hào)此題 表達(dá)式 1 被省略,表達(dá)式 2(循環(huán)條件)為 y0,表達(dá)式 3 為 y-初值 y 為 9,循環(huán)條件(即表達(dá)式 2)y0 成立,進(jìn)入循環(huán)體第 1 次循環(huán)執(zhí)行 if 語句。9%3=0,if 語句的條件表達(dá)式成立,執(zhí)行 printf(%d”,- -y),即 y 先自減1 變?yōu)?8,然后在輸出,因此屏幕上輸出 8轉(zhuǎn)向表達(dá)式 3,執(zhí)行 y-, y=y-1=8-1=7。循環(huán)條件 y0 成立,進(jìn)入第 2 次循環(huán)第 2 次循環(huán)執(zhí)行 if 語句。7%3 不為 0,if 語句的條件表達(dá)式不成立,不執(zhí)行 printf(%d”,- -y)轉(zhuǎn)向表達(dá)式 3,執(zhí)行 y-, y=y-1=7-1=6。循環(huán)條件 y0 成立,進(jìn)入第 3 次循環(huán)第 3 次循環(huán)執(zhí)行 if 語句。6%3=0,if 語句的條件表達(dá)式成立,執(zhí)行 printf(%d”,- -y),即 y 先自減1 變?yōu)?5,然后在輸出,因此屏幕上輸出 5轉(zhuǎn)向表達(dá)式 3,執(zhí)行 y-, y=y-1=5-1=4。循環(huán)條件 y0 成立,進(jìn)入第 4 次循環(huán)第 4 次循環(huán)執(zhí)行 if 語句。4%3 不為 0,if 語句的條件表達(dá)式不成立,不執(zhí)行 printf(%d”,- -y)轉(zhuǎn)向表達(dá)式 3,執(zhí)行 y-, y=4-1=3。循環(huán)條件 y0 成立,進(jìn)入第 5 次循環(huán)第 5 次循環(huán)執(zhí)行 if 語句。3%3=0,if 語句的條件表達(dá)式成立,執(zhí)行 printf(%d”,- -y),即 y 先自減1 變?yōu)?2,然后在輸出,因此屏幕上輸出 2轉(zhuǎn)向表達(dá)式 3,執(zhí)行 y-, y=y-1=2-1=1。循環(huán)條件 y0 成立,進(jìn)入第 5 次循環(huán)第 6 次循環(huán)執(zhí)行 if 語句。1%3 不為 0,if 語句的條件表達(dá)式不成立,不執(zhí)行 printf(%d”,- -y)轉(zhuǎn)向表達(dá)式 3,執(zhí)行 y-, y=1-1=0。循環(huán)條件 y0 不成立,循環(huán)結(jié)束。18. #include main() int i,sum=0; i=1;do sum=sum+i; i+; while(i#define N 4main() int i;int x1=1,x2=2;printf(n);for(i=1;imain( ) int x, y;for(x=30, y=0; x=10, y#define N 4main( ) int i,j;for(i=1;imain() int i, a10;for(i=9;i=0;i-) ai=10-i;printf(“%d%d%d”,a2,a5,a8);運(yùn)行結(jié)果為:852詳見 p143-146. 例題 6.1 一定看懂!首先定義整型變量 i,整型數(shù)組 a, a 的長度為 10,即 a 中包含 10 個(gè)整型元素(整型變量)執(zhí)行 for 循環(huán)語句初值 i=9, 使得循環(huán)條件 i=0 成立,執(zhí)行循環(huán)體第 1 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a9=10-9=1計(jì)算表達(dá)式 3,即 i-,i 為 8,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 2 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a8=10-8=2計(jì)算表達(dá)式 3,即 i-,i 為 7,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 3 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a7=10-7=3計(jì)算表達(dá)式 3,即 i-,i 為 6,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 4 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a6=10-6=4計(jì)算表達(dá)式 3,即 i-,i 為 5,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 5 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a5=10-5=5計(jì)算表達(dá)式 3,即 i-,i 為 4,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 6 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a4=10-4=6計(jì)算表達(dá)式 3,即 i-,i 為 3,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 7 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a3=10-3=7計(jì)算表達(dá)式 3,即 i-,i 為 2,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 8 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a2=10-2=8計(jì)算表達(dá)式 3,即 i-,i 為 1,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 9 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a1=10-1=9計(jì)算表達(dá)式 3,即 i-,i 為 0,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 10 次循環(huán)執(zhí)行 ai=10-i 等價(jià)于 a0=10-0=10計(jì)算表達(dá)式 3,即 i-,i 為-1 ,使得循環(huán)條件 i=0 不成立,跳出循環(huán)體2. #include main() int i,a6;for (i=0; i=0 ; i-) printf(%3d,ai); 運(yùn)行結(jié)果為:5 4 3 2 1 0首先定義整型變量 i,整型數(shù)組 a, a 的長度為 6,即 a 中包含 6 個(gè)整型元素(整型變量)執(zhí)行第一個(gè) for 循環(huán)語句初值 i=0, 使得循環(huán)條件 i=0 成立,執(zhí)行循環(huán)體第 1 次循環(huán)執(zhí)行 printf(%3d,ai); 即輸出 a5的值計(jì)算表達(dá)式 3,即 i-,i 為 4,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 2 次循環(huán)執(zhí)行 printf(%3d,ai); 即輸出 a4的值計(jì)算表達(dá)式 3,即 i-,i 為 3,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 3 次循環(huán)執(zhí)行 printf(%3d,ai); 即輸出 a3的值計(jì)算表達(dá)式 3,即 i-,i 為 2,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 4 次循環(huán)執(zhí)行 printf(%3d,ai); 即輸出 a2的值計(jì)算表達(dá)式 3,即 i-,i 為 1,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 5 次循環(huán)執(zhí)行 printf(%3d,ai); 即輸出 a1的值計(jì)算表達(dá)式 3,即 i-,i 為 0,使得循環(huán)條件 i=0 成立,繼續(xù)執(zhí)行循環(huán)體第 6 次循環(huán)執(zhí)行 printf(%3d,ai); 即輸出 a0的值計(jì)算表達(dá)式 3,即 i-,i 為 6,使得循環(huán)條件 i=0 不成立,結(jié)束循環(huán)3. #include main( ) int i,k,a10,p3;k=5;for(i=0;iint m33=1,2,3;int n33=1,2 ,3;main( ) printf(“%d,”, m10+n00);printf(“%dn”,m01+n10);運(yùn)行結(jié)果為:3,0詳見教材 P149152,圖 6.7 看懂!首先定義整型二維數(shù)組 m,m 為 3 行,3 列的二維矩陣,并對(duì)其以行的形式初始化m00=1 m01=0 m12=0m10=2 m11=0 m22=0m20=3 m21=0 m22=0定義整型二維數(shù)組 n,m 為 3 行,3 列的二維矩陣n00=1 n01=2 n12=3n10=0 n11=0 n22=0n20=0 n21=0 n22=0因此 m10+n00=2+1=3m01+n10=0+0=05.#include main() int i;int x33=1,2,3,4,5,6,7,8,9;for (i=1; imain( ) int n33, i, j;for(i=0;imain()char diamond5=_,_,*,_,*,_,*,*,_,_,_,*,_,*,_,*,_,_,*;int i,j;for(i=0;imain( ) int i, f10;f0=f1=1;for(i=2;imain() float fun(float x); float ave,a3=4.5,2,4; ave=fun(a); printf(“ave=%7.2f”,ave); float fun(float x) int j;float aver=1; for (j=0;jmain()int a23=1,2,3,4,5,6;int b32,i,j;for(i=0;if(int b,int n)int i,r;r=1;for (i=0;iint Sub(int a, int b)return (a- b);main()int x, y, result = 0;scanf(%d,%d, &x,&y ); result = Sub(x,y ) ; printf(result = %dn,result);當(dāng)從鍵盤輸入:6,3 運(yùn)行結(jié)果為 :result =3 2. #include int min( int x, int y ) int m;if ( x y ) m = x;else m = y;return(m); main() int a=3,b=5,abmin ; abmin = min(a,b); printf(“min is %d”, abmin); 運(yùn)行結(jié)果為:min is 53.#includefunc(int x) x=10;printf(“%d, ”,x);main( ) int x=20;func(x);printf(“%d”, x);運(yùn)行結(jié)果為:10, 20在 main 函數(shù)中調(diào)用函數(shù) func,main 函數(shù)將 20 作為實(shí)參穿給 func,并轉(zhuǎn)向開始執(zhí)行 func.main()對(duì)應(yīng)的內(nèi)存 func()對(duì)應(yīng)的內(nèi)存20 x 20 x func()執(zhí)行 x=10;,其內(nèi)存中 x 變?yōu)?10. 10 xfunc()執(zhí)行 printf(“%d, ”,x); 即輸出 func 函數(shù)對(duì)應(yīng)內(nèi)存中 x 的值,輸出的是10. 至此,func 函數(shù)執(zhí)行結(jié)束,返回 main 函數(shù)。main 函數(shù)執(zhí)行 printf(“%d”, x);此時(shí)輸出 main 函數(shù)對(duì)應(yīng)內(nèi)存中的 x,即 204.#include int m=4;int func(int x,int y) int m=1;return(x*y-m);main()int a=2,b=3;printf(%dn,m);printf(%dn,func(a,b)/m); 運(yùn)行結(jié)果為:41整型變量 m 在函數(shù)外定義,因此 m 為全局變量,其作用于范圍為其定義位置開始,一直到整個(gè)程序結(jié)束。因此 func 與 main 函數(shù)都可以訪問 m程序首先執(zhí)行 main 函數(shù)執(zhí)行 printf(%dn,m); 即輸出 m 中的值 4,并換行。執(zhí)行 printf(%dn,func(a,b)/m);即輸出表達(dá)式 func(a,b)/m 的值,為了計(jì)算該表達(dá)式,需要調(diào)用函數(shù) func。此時(shí) main 將 a,b 中的 2 和 3 值作為實(shí)參傳遞給 func 的 x 和 y程序開始轉(zhuǎn)向執(zhí)行 func 函數(shù),此時(shí) func 中的 x 為 2,y 為 3執(zhí)行 int m=1; 此句定義了一個(gè)局部變量 m 并賦值為 1 。m 的作用域?yàn)槠渌诘膹?fù)合語句,即 func 的函數(shù)體,因此在 func 的函數(shù)體重,有限訪問局部變量 m。執(zhí)行 return(x*y-m); 即 return(2*3-1) ;返回的是整數(shù) 5.func 函數(shù)返回至 main 函數(shù)中的被調(diào)用處main 函數(shù)中 func(a,b)的值為 5,func(a,b)/m=5/4=1,注意,在 main 函數(shù)中訪問的 m 為全局變量 m,此時(shí) main 函數(shù)無法訪問 func 中的 m,因?yàn)椴辉?func 中 m 的作用域。5.#include int fun(int a, int b) if(ab) return(a);else return(b);main() int x=15, y=8, r;r= fun(x,y);printf(r=%dn, r);運(yùn)行結(jié)果為:r=15程序首先執(zhí)行 main 函數(shù)執(zhí)行 r= fun(x,y);即將 func(x,y)的值賦給 r,為了計(jì)算該表達(dá)式,需要調(diào)用函數(shù) func。此時(shí) main 將 x,y 中的 15 和 8 值作為實(shí)參傳遞給 func 的 a 和 b程序開始轉(zhuǎn)向執(zhí)行 func 函數(shù),此時(shí) func 中的 a 為 15,b 為 8執(zhí)行 if 語句;判斷 if 后面的表達(dá)式,ab 成立,因此執(zhí)行相應(yīng)的操作 return(a);即返回a 的值 。func 函數(shù)返回至 main 函數(shù)中的被調(diào)用處main 函數(shù)中 func(x,y)的值為 15,即將 15 賦給 r。執(zhí)行 printf(r=%dn, r); 即輸出 r=156.#include int fac(int n) int f=1,i;for(i=1;ib 成立,因此執(zhí)行相應(yīng)的操作 return(a);即返回a 的值 。func 函數(shù)返回至 main 函數(shù)中的被調(diào)用處main 函數(shù)中 func(x,y)的值為 15,即將 15 賦給 r。執(zhí)行 printf(r=%dn, r); 即輸出 r=157. #include unsigned fun6(unsigned num) unsigned k=1;do k*=num%10; num/=10;while(num);return k;main() unsigned n=26;printf(“%dn”,fun6(n);運(yùn)行結(jié)果為:12程序首先執(zhí)行 main 函數(shù)執(zhí)行 printf(“%dn”,fun6(n); 即輸出表達(dá)式 func(6)的值,為了計(jì)算該表達(dá)式,需要調(diào)用函數(shù) func。此時(shí) main 將 n 中的 26 作為實(shí)參傳遞給 func 的 num程序開始轉(zhuǎn)向執(zhí)行 func 函數(shù),此時(shí) func 中的 num 為 26執(zhí)行 do-while 語句第 1 次循環(huán)執(zhí)行 k*=num%10,即 k=k*(num%10)=1*(26%10)=6執(zhí)行 num/=10;即 num=num/10=26/10=2while 后面循環(huán)條件為 num,此時(shí) num 為 2,是非 0 值,即表示循環(huán)條件成立,繼續(xù)執(zhí)行循環(huán)體。此時(shí) k 為 6第 2 次循環(huán)執(zhí)行 k*=num%10,即 k=k*(num%10)=6*(2%10)=12執(zhí)行 num/=10;即 num=num/10=2/10=0while 后面循環(huán)條件為 num,此時(shí) num 為 0,表示循環(huán)條件不成立,結(jié)束循環(huán)執(zhí)行 return k; 即返回至 main 函數(shù)中的被調(diào)用處執(zhí)行 main 函數(shù)繼續(xù)執(zhí)行 printf(“%dn”,fun6(n); 即輸出 128.#include int max(int x, int y);main() int a,b,c;a=7;b=8;c=max(a,b);printf(Max is %d,c);max(int x, int y) int z;z=xy? x : y;return(z) ;運(yùn)行結(jié)果為:Max is 8指針1.# include main ( ) int x = 10, 20, 30, 40, 50 ;int *p ;p=x;printf ( “%d”, *(p+2 ) ); 運(yùn)行結(jié)果為: 30首先定義一個(gè)整型數(shù)組 x,x 的長度為 5;然后定義一個(gè)指針變量 p;對(duì) p 進(jìn)行初始化,將數(shù)組 x 的地址賦給 p。因此此時(shí) p 中存放的數(shù)組 x 的首地址,即數(shù)組中第一個(gè)元素 x0的地址。然后執(zhí)行 printf 語句,輸出表達(dá)式*(p+2) 的值。p+2 表示以 p 當(dāng)前指向的位置起始,之后第 2 個(gè)元素的地址,即 a2的地址。*(p+2)則表示該地址內(nèi)所存放的內(nèi)容,即 a2的值30,因此輸出 302.#include main( ) char s=”abcdefg”;char *p;p=s;printf(“ch=%cn”,*(p+5);運(yùn)行結(jié)果為: ch=f 首先定義一個(gè)字符型數(shù)組 s,并用字符串 abcdefg 對(duì) s 進(jìn)行初始化; 然后定義一個(gè)字符型指針變量 p; 對(duì) p 進(jìn)行初始化,將數(shù)組 s 的地址賦給 p。因此此時(shí) p 中存放的數(shù)組 s 的首地址,即數(shù)組中第一個(gè)元素 s0的地址。然后執(zhí)行 printf 語句,輸出表達(dá)式*(p+5) 的值。p+5 表示以 p 當(dāng)前指向的位置起始,之后第 5 個(gè)元素的地址,即 a5的地址。*(p+5)則表示該地址內(nèi)所存放的內(nèi)容,即 a5的值 f, 因此輸出 ch=f3.#includemain ( ) int a=1, 2, 3, 4, 5 ;int x, y, *p;p=a;x=*(p+2);printf(%d:%d n, *p, x);運(yùn)行結(jié)果為: 1:3首先定義一個(gè)整型數(shù)組 a,并對(duì) a 進(jìn)行初始化; 然后定義整型變量 x,y,整型指針變量 p; 再將數(shù)組 a 的地址賦給 p。因此此時(shí) p 中存放的數(shù)組 a 的首地址,即數(shù)組中第一個(gè)元素 a0的地址。執(zhí)行 x=*(p+2);p+2 表示以 p 當(dāng)前所指向的位置起始,之后第 2 個(gè)元素的地址,即 a2的地址。*(p+2)則表示該地址內(nèi)所存放的內(nèi)容,即 a2的值 3,然后再把 3 賦給 x然后執(zhí)行 printf 語句,先輸出表達(dá)式*p 的值。此時(shí)*p 表示的是 p 所指向變量的內(nèi)容,即 a0的值 1。再輸出一個(gè)冒號(hào)。然后再輸出 x 中的值 3。4.#includemain() int arr =30,25,20,15,10,5, *p=arr;p+;printf(“%dn”,*(p+3);運(yùn)行結(jié)果為:10首先定義一個(gè)整型數(shù)組 arr,并對(duì) arr 進(jìn)行初始化; 然后定義整型指針變量 p; 再將數(shù)組arr 的地址賦給 p。因此此時(shí) p 中存放的數(shù)組 arr 的首地址,即數(shù)組中第一個(gè)元素 a0的地址。執(zhí)行 p+,即 p=p+1。p+1 表示以 p 當(dāng)前所指向的位置起始,之后第 1 個(gè)元素的地址,即 arr1的地址,然后再將 arr1的地址賦給 p,執(zhí)行完此語句后,p 不再指向 arr0,而是指向 arr1。然后執(zhí)行 printf 語句,輸出表達(dá)式*(p+3) 的值。p+3 表示以 p 當(dāng)前指向的位置起始( 此時(shí)p 指向 arr1),之后第 3 個(gè)元素的地址,即 arr4的地址。 *(p+3)則表示該地址內(nèi)所存放的內(nèi)容,即 arr4的值 10, 因此輸出 105.#include main( ) int a =1, 2, 3, 4, 5, 6;int x, y, *p;p = &a0;x = *(p+2);y = *(p+4);printf(“*p=%d, x=%d, y=%dn”, *p, x, y);運(yùn)行結(jié)果為: *p=1, x=3, y=5首先定義一個(gè)整型數(shù)組 a,并對(duì) a 進(jìn)行初始化; 然后定義整型變

溫馨提示

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

評(píng)論

0/150

提交評(píng)論