C++_03_02_基本程序設(shè)計_第1頁
C++_03_02_基本程序設(shè)計_第2頁
C++_03_02_基本程序設(shè)計_第3頁
C++_03_02_基本程序設(shè)計_第4頁
C++_03_02_基本程序設(shè)計_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1西西 南南 交交 通通 大大 學(xué)學(xué)計算機程序設(shè)計基礎(chǔ)計算機程序設(shè)計基礎(chǔ) 與與 Visual C+Visual C+西南交通大學(xué)西南交通大學(xué)2本章主要內(nèi)容本章主要內(nèi)容v順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計v選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計v循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)3順序結(jié)構(gòu)的實現(xiàn)方法順序結(jié)構(gòu)的實現(xiàn)方法選擇結(jié)構(gòu)的實現(xiàn)方法選擇結(jié)構(gòu)的實現(xiàn)方法循環(huán)結(jié)構(gòu)的實現(xiàn)方法循環(huán)結(jié)構(gòu)的實現(xiàn)方法三種基本控制結(jié)構(gòu)的實現(xiàn)三種基本控制結(jié)構(gòu)的實現(xiàn)西南交通大學(xué)西南交通大學(xué)43.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)53.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交

2、通大學(xué)西南交通大學(xué)6編程技巧編程技巧 當(dāng)當(dāng) 型型while 循循 環(huán)環(huán)實現(xiàn)循環(huán)結(jié)構(gòu)的算法回顧實現(xiàn)循環(huán)結(jié)構(gòu)的算法回顧3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)7條件的描述方法條件的描述方法 (與選擇結(jié)構(gòu)相同)(與選擇結(jié)構(gòu)相同) 直到型(直到型(untiluntil型)循環(huán)型)循環(huán)3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)8 while(條件條件) 循環(huán)體循環(huán)體 注注: :循環(huán)體是單條語句循環(huán)體是單條語句 或復(fù)合語句或復(fù)合語句實現(xiàn)循環(huán)結(jié)構(gòu)的語句實現(xiàn)循環(huán)結(jié)構(gòu)的語句 3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)9例

3、例 s=1,k=1,i=1; while(i100) k=k+1; s=s+k; cout“s=”s; 使用使用WhileWhile語句語句需要需要注意注意的問的問題題 循環(huán)體中應(yīng)修正循環(huán)體中應(yīng)修正“循環(huán)條件循環(huán)條件”中的某些中的某些變量的數(shù)值或含有使循環(huán)趨向于結(jié)束的語變量的數(shù)值或含有使循環(huán)趨向于結(jié)束的語句句 循環(huán)體中,循環(huán)體中,沒有改變條沒有改變條件的操作,件的操作,死循環(huán)死循環(huán) 3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)10西南交通大學(xué)西南交通大學(xué)113.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)12編程技巧編程技巧 表達式表達式1-

4、1-變量賦初值變量賦初值表達式表達式2-2-循環(huán)的條件循環(huán)的條件表達式表達式3-3-修正條件值修正條件值表達式表達式1 1和表達式和表達式3 3可以是逗號表達式可以是逗號表達式 for(表達式表達式1;表達式;表達式2;表達式;表達式3) 語句語句 3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)13說明:說明: 1.1.表達式表達式1 1、2 2和和3 3都可省,但分號不能省都可省,但分號不能省 如:如:for(for(;條件;條件;) )等同于等同于 for(for(;) ) 等同于等同于 2.2.在表達式在表達式1 1中可定義變量中可定義變量, ,但該變量只但該變

5、量只 能在能在forfor循環(huán)中使用循環(huán)中使用 while(while(條件條件) )while(true)while(true)3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)14西南交通大學(xué)西南交通大學(xué)153.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)16 說明:說明: 實現(xiàn)實現(xiàn)“直到型直到型”循環(huán)循環(huán) 但是條件成立時執(zhí)行循環(huán)體。但是條件成立時執(zhí)行循環(huán)體。 同同 w h i l ew h i l e 語 句 一 樣 , 要語 句 一 樣 , 要 循 環(huán) 體 中 應(yīng) 修 正循 環(huán) 體 中 應(yīng) 修 正 “ 循 環(huán) 條 件循 環(huán) 條 件 ” 中

6、的 某 些 變 量 的 數(shù) 值 或 含 有中 的 某 些 變 量 的 數(shù) 值 或 含 有 使循環(huán)趨于結(jié)束的語句,使循環(huán)趨于結(jié)束的語句,防止陷入死循環(huán)防止陷入死循環(huán)do 語句語句while(條件條件);編程技巧編程技巧 3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)17(do-while)(do-while)#include #include void main(void)void main(void) int i, sum(0); int i, sum(0); coutenter i=; couti; cini; /i=5/i=5 while(i=10) while(

7、i=10) sum+=i; sum+=i; i+; i+; coutsum=sum;coutsum=sum; #include #include void main(void )void main(void ) int i, sum(0); int i, sum(0); cini; cini; /i=5/i=5 do do sum+=i; sum+=i; i+; i+; while(i=10); while(i=10);coutsum=sum;coutsum=sum; 西南交通大學(xué)西南交通大學(xué)18(for)(for)#include #include void main(void)void m

8、ain(void) int i, sum; int i, sum; cini; cini; /i=5/i=5 for(sum=0,i=1;i11;i+)for(sum=0,i=1;i11;i+) sum+=i; sum+=i; coutsum=sumendl; coutsum=sumendl; 西南交通大學(xué)西南交通大學(xué)19西南交通大學(xué)西南交通大學(xué)20西南交通大學(xué)西南交通大學(xué)21編程技巧編程技巧 continuecontinue; 作用:跳過本次循環(huán),繼續(xù)下一次的循環(huán)作用:跳過本次循環(huán),繼續(xù)下一次的循環(huán)breakbreak; 作用:終止循環(huán)流程,退出本層循環(huán)語句作用:終止循環(huán)流程,退出本層循環(huán)語

9、句goto goto 標(biāo)號;標(biāo)號; 標(biāo)號:語句標(biāo)號:語句說 明說 明 : : 標(biāo) 號 遵 從 標(biāo) 識 符 的 規(guī) 定 長 度 不 超 過標(biāo) 號 遵 從 標(biāo) 識 符 的 規(guī) 定 長 度 不 超 過 8 8 個 字個 字 符;符;GotoGoto語句是無條件轉(zhuǎn)移語句使用范圍僅語句是無條件轉(zhuǎn)移語句使用范圍僅 局限于函數(shù)內(nèi)部局限于函數(shù)內(nèi)部循環(huán)控制語句循環(huán)控制語句 3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)223.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)233.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)24課堂練習(xí)課堂練

10、習(xí)2 2#include#includevoid main(void )void main(void ) int i(1),a(0);int i(1),a(0);for(;i=10;i+)for(;i=10;i+) dodo i+; i+; a+; a+; while(i3)while(i3); ; i+;i+; coutacouta“, ,”iendl;iendl; 請請閱閱讀讀3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計1 31 32 62 63 93 94 124 12西南交通大學(xué)西南交通大學(xué)25西南交通大學(xué)西南交通大學(xué)263.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)

11、西南交通大學(xué)27嵌套的循環(huán)控制嵌套的循環(huán)控制 C+C+語言對循環(huán)嵌套的深度沒有限制,但語言對循環(huán)嵌套的深度沒有限制,但嵌套循環(huán)的循環(huán)控制變量不得同名嵌套循環(huán)的循環(huán)控制變量不得同名 例例 for(i=1;i=100;i+ +) 語句語句1; for (j=0;j=100;j+) 語句語句2; for (j=0;j=40;j+ +) 語句語句3; 語句語句4; 嵌套過深時,使用嵌套過深時,使用goto語句要比語句要比break語句簡便語句簡便并列關(guān)系并列關(guān)系允許同名允許同名嵌套關(guān)系不嵌套關(guān)系不允許同名允許同名西南交通大學(xué)西南交通大學(xué)28課堂練習(xí)課堂練習(xí)3 3 #include#include vo

12、id main(void ) void main(void ) int n; int n; for(n=100;n=200;n+)for(n=100;n=200;n+) if(!n%3&n%10=3) if(!n%3&n%10=3) coutnendl; coutnendl; if(!(n%3)&n%10=3)改改錯題錯題:輸輸出出100100到到200200之之間間能被能被3 3整除且尾整除且尾數(shù)為數(shù)為3 3的整的整數(shù)數(shù)。warning C4804: % : unsafe use of type bool in operation假假設(shè)設(shè):n n為為3333?西南交通

13、大學(xué)西南交通大學(xué)29 編程輸出如下圖形編程輸出如下圖形課堂練習(xí)課堂練習(xí)4 4西南交通大學(xué)西南交通大學(xué)30 分析分析3.3 3.3 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計西南交通大學(xué)西南交通大學(xué)31#include void main(void) int i,j; for(i=0;i=3;i+) for(j=0;j=2-i;j+) cout ; for(j=0;j=2*i;j+) cout *; coutendl; for (i=0;i=2;i+) for(j=0;j=i;j+) cout ; for (j=0;j=4-2*i;j+) cout *; coutendl; 兩個兩個空格空格一一個個空格空

14、格一一個個星星星星西南交通大學(xué)西南交通大學(xué)32#include void main(void) int i,j; for(i=0;i=3;i+) for(j=0;j=3+i;j+) if (j3-i) cout ; else cout *; coutendl; for (i=0;i=2;i+) for(j=0;j=5-i;j+) if (j=i) cout ; else cout *; coutendl; 西南交通大學(xué)西南交通大學(xué)33將一個整數(shù)的各位數(shù)字反轉(zhuǎn)后輸出將一個整數(shù)的各位數(shù)字反轉(zhuǎn)后輸出課堂練習(xí)課堂練習(xí)5 512345=( *10)+4)*10+3)*10+2)*10+1西南交通大學(xué)西南

15、交通大學(xué)34將一個整數(shù)的各位數(shù)字反轉(zhuǎn)后輸出將一個整數(shù)的各位數(shù)字反轉(zhuǎn)后輸出# #include include void main(void)void main(void) int n,right_digit; int n,right_digit; cout Enter the number:;cout n;cin n;coutThe number in reverse order is ;coutThe number in reverse order is ;dodo right_digit=n%10; right_digit=n%10; coutright_digit; coutright_

16、digit; n/=10; n/=10; while(n!=0); while(n!=0); coutendl; coutendl; 直接輸出直接輸出課堂練習(xí)課堂練習(xí)5 5西南交通大學(xué)西南交通大學(xué)35#include void main(void) int n,right_digit,i=10,num=0; cout n; do right_digit=n%10;num+=right_digit;if(n/=10)num=num*i; while(n!=0); coutThe number in reverse order is”numendl; 轉(zhuǎn)存輸出轉(zhuǎn)存輸出西南交通大學(xué)西南交通大學(xué)36習(xí)

17、題課西南交通大學(xué)西南交通大學(xué)37 中國古典的中國古典的“雞兔同籠問題雞兔同籠問題”:在:在同一個籠子里養(yǎng)著雞與兔,但不知其同一個籠子里養(yǎng)著雞與兔,但不知其中雞有多少只兔有多少只。只知道雞中雞有多少只兔有多少只。只知道雞和兔的總數(shù)是和兔的總數(shù)是a a,雞與兔的總腳數(shù)量,雞與兔的總腳數(shù)量b b,求雞與兔各有多少只。求雞與兔各有多少只。課堂練習(xí)1西南交通大學(xué)西南交通大學(xué)38分析:分析:每只雞有兩條腿,每只兔有四只腿每只雞有兩條腿,每只兔有四只腿假設(shè)有假設(shè)有x x只雞和只雞和y y只兔只兔則根據(jù)已知條件列出方程組如下:則根據(jù)已知條件列出方程組如下: x+y=a x+y=a 雞兔總數(shù)雞兔總數(shù) 2x+4y

18、=b 2x+4y=b 雞兔總腳數(shù)雞兔總腳數(shù) 西南交通大學(xué)西南交通大學(xué)39#include “iostream”using namespace std;void main(void) int a,b,x,y; couta; coutb; y=(b-2*a)/2; x=(4*a-b)/2; cout“雞的數(shù)量為雞的數(shù)量為:”xendl; cout“兔的數(shù)量為兔的數(shù)量為:”yendl; 參考答案參考答案西南交通大學(xué)西南交通大學(xué)40while (a%2!=0)while (a%2!=0) coutcouta;cina; 西南交通大學(xué)西南交通大學(xué)41 猴子吃猴子吃桃桃問題。猴子第一天摘下若問題。猴子第一

19、天摘下若干個桃子,當(dāng)即吃了一半還不過癮,又多干個桃子,當(dāng)即吃了一半還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃吃了一個。第二天早上又將剩下的桃子吃掉了一半,又多吃了一個。以后每天早上掉了一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半多一個。到第都吃了前一天剩下的一半多一個。到第1010天早上想再吃時,見只剩一個桃子了。天早上想再吃時,見只剩一個桃子了。 請設(shè)計實現(xiàn)求第一天猴子共摘了多請設(shè)計實現(xiàn)求第一天猴子共摘了多少桃子的算法。少桃子的算法。 課堂練習(xí)課堂練習(xí)2 2西南交通大學(xué)西南交通大學(xué)42 第一天的桃子數(shù)是第第一天的桃子數(shù)是第2 2天桃子數(shù)加天桃子數(shù)加1 1后的后的2 2倍倍

20、x1=(x2+1)x1=(x2+1)2 2 依次類推,直到第依次類推,直到第1010天只剩下天只剩下1 1個桃子個桃子分析分析beginbeginx2=1for dat10 step -1 until 1 do x1=(x2+1) x1=(x2+1)2 2 x2=x1 x2=x1 print (print (“猴子總共吃掉的桃子數(shù)為猴子總共吃掉的桃子數(shù)為: : ”,x1) ,x1) endend西南交通大學(xué)西南交通大學(xué)43參考答案參考答案#include using namespace std;void main() int x2=1,x1; for(int dat(10);dat1;dat-

21、) x1=(x2+1)*2; x2=x1; cout猴子總共吃掉的桃子數(shù)為猴子總共吃掉的桃子數(shù)為: x2endl;西南交通大學(xué)西南交通大學(xué)44課堂練習(xí)課堂練習(xí)3 3 編程計算編程計算100100個由鍵盤讀入的所有個由鍵盤讀入的所有奇數(shù)的和。奇數(shù)的和。(思路:思路:依次讀取依次讀取1100次輸入次輸入的數(shù),的數(shù),對讀取的每一個數(shù),先進行奇數(shù)判定,對讀取的每一個數(shù),先進行奇數(shù)判定,若為奇數(shù),則加入總和之中。最后輸若為奇數(shù),則加入總和之中。最后輸出總和。出總和。)西南交通大學(xué)西南交通大學(xué)45課堂練習(xí)課堂練習(xí)3 3for(i=1;iX; if(x%2=1) sum=sum+x;num=0;while(

22、1) cin X; if(x%2=1) sum=sum+x;num+; if(num=100) break;西南交通大學(xué)西南交通大學(xué)46參考答案參考答案 #include void main(void ) int n,sum=0; for(int i=1;i=100;i+) coutplease enter in; if(n%2!=0)sum+=n; coutsum=sumendl; 西南交通大學(xué)西南交通大學(xué)47課堂練習(xí)課堂練習(xí)4 4西南交通大學(xué)西南交通大學(xué)48sum1sum1for i2 step 1 until 100 do sumsum+1 sumsum+1/ /i iprint sum

23、print sum sum1sum1i2i2while i100 do sumsum+ sumsum+ 1/i1/i ii+1ii+1print sumprint sum 西南交通大學(xué)西南交通大學(xué)49 #include void main(void ) int sum=1; for(int i=2;i=100;i+) sum+=1/i; coutsum=sumendl; 閱讀閱讀+討論討論 #include void main(void ) double sum=1; for (int i=2;i=100;i+) sum+=1/i; coutsum=sumendl; 西南交通大學(xué)西南交通大學(xué)5

24、01001991413121.1 課堂練習(xí)課堂練習(xí)5 5西南交通大學(xué)西南交通大學(xué)51 #include void main(void ) double sum=1; int sign(-1); for (int i=2;i=100;i+) sum+=sign*1/i; sign*=-1; coutsum=sum=n)m,n(m=n) 用用m m除以除以n n,求得余數(shù),求得余數(shù)q q 若若q q為零,為零,n n即為所求的最大公約數(shù);即為所求的最大公約數(shù); 若若q q不為零,則更新除數(shù)和被除數(shù)(不為零,則更新除數(shù)和被除數(shù)(nm,qnm,q n n)再做除法,直至余數(shù))再做除法,直至余數(shù)q q為

25、零止。為零止。 這時,相應(yīng)的這時,相應(yīng)的n n即為所求的最大公約數(shù)即為所求的最大公約數(shù) 而最小公倍數(shù)而最小公倍數(shù)= =原始原始m m與與n n值的乘積值的乘積/ /最大公約數(shù)最大公約數(shù)課堂練習(xí)課堂練習(xí)6 6西南交通大學(xué)西南交通大學(xué)54 if(mif(mn)thenn)then am am bn bn else else an an bm bm repeatrepeat qa qab b取余數(shù)取余數(shù) abab bq bq until (q0)算法算法西南交通大學(xué)西南交通大學(xué)55#include void main() int m,n,q,a,b; coutmn; if(mn)a=m;b=n; e

26、lse a=n;b=m; / 保持保持a最大最大 do q=a%b; a=b; b=q; while(q!=0); coutnm與與n的最大公約數(shù)是的最大公約數(shù)是aendl; c o u t m 與與 n 的 最 小 公 倍 數(shù) 是的 最 小 公 倍 數(shù) 是m*n/aendl;參考答案參考答案西南交通大學(xué)西南交通大學(xué)56 數(shù)學(xué)燈謎數(shù)學(xué)燈謎 有算式:有算式: A B C D _ C D C _ _ A B C 其中其中A , B , C , D 均為一位非負整數(shù)均為一位非負整數(shù) 要求要求: 找出找出A , B , C , D各值。各值。 課堂練習(xí)課堂練習(xí)7 7西南交通大學(xué)西南交通大學(xué)57算算法法

27、for a1 step 1 until 9 do for b 0 step 1 until 9 do for c 1 step 1 until 9 do for d 0 step 1 until 9 do x=1000a+100b+10c+d y=100c+10d+c z=100a+10b+c if (x-y)=z) then print(a,b,c,d) goto end end:西南交通大學(xué)西南交通大學(xué)58#include iostream.hvoid main() int a,b,c,d,x,y,z; for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=1;c=9

28、;c+) for(d=0;d=9;d+) x=1000*a+100*b+10*c+d; y=100*c+10*d+c; z=100*a+10*b+c; if(x-y)=z)couta=ab=b; coutc=cd=dendl; goto end; end:;參考答案參考答案西南交通大學(xué)西南交通大學(xué)59婚禮上的謊言婚禮上的謊言三對情侶參加婚禮,三個新郎為三對情侶參加婚禮,三個新郎為A,B,C,三,三個新娘為個新娘為X,Y,Z。有人想知道究竟誰和誰結(jié)。有人想知道究竟誰和誰結(jié)婚,于是就問新人中的三位,得到如下的婚,于是就問新人中的三位,得到如下的提示:提示:A說他將和說他將和X結(jié)婚;結(jié)婚;X說她的未

29、婚夫說她的未婚夫是是C;C說他將和說他將和Z結(jié)婚。這人事后知道他結(jié)婚。這人事后知道他們在開玩笑,說的全是假話。那么,究竟們在開玩笑,說的全是假話。那么,究竟誰和誰結(jié)婚呢?誰和誰結(jié)婚呢?課堂練習(xí)課堂練習(xí)8 8西南交通大學(xué)西南交通大學(xué)60將將A,B,CA,B,C分別用數(shù)字分別用數(shù)字1,2,31,2,3表示表示根據(jù)新人的敘述可得到如下的表達式:根據(jù)新人的敘述可得到如下的表達式: X!=1 AX!=1 A不與不與X X結(jié)婚結(jié)婚 X!=3 CX!=3 C不與不與X X結(jié)婚結(jié)婚 Z!=3 CZ!=3 C不與不與Z Z結(jié)婚結(jié)婚題目還隱含著一個條件:三個新娘不能互為題目還隱含著一個條件:三個新娘不能互為配偶,

30、即有配偶,即有 X!=Y X!=Y 且且 X!=Z X!=Z 且且 Y!=ZY!=Z分析分析西南交通大學(xué)西南交通大學(xué)61算法算法for x1 step 1 until 3 do 窮舉新娘窮舉新娘X所有可能的配偶所有可能的配偶 for y 1 step 1 until 3 do 窮舉新娘窮舉新娘Y所有可能的配偶所有可能的配偶 for z 1 step 1 until 3 do 窮舉新娘窮舉新娘Z所有可能的配偶所有可能的配偶 if (x1 and x 3 and z 3 and x y and x z and y z) then print (“X will marry to ”, x) prin

31、t(“Y will marry to ”, y) print(“Z will marry to ”, z) 西南交通大學(xué)西南交通大學(xué)62#include void main() int x,y,z; for(x=1;x=3;x+) /窮舉新娘窮舉新娘X所有可能的配偶所有可能的配偶 for(y=1;y=3;y+) /窮舉新娘窮舉新娘Y所有可能的配偶所有可能的配偶 for(z=1;z=3;z+) /窮舉新娘窮舉新娘Z所有可能的配偶所有可能的配偶 if(x!=1&x!=3&z!=3&x!=y&x!=z&y!=z) coutX will marry to xen

32、dl; coutY will marry to yendl; coutZ will marry to zendl; X will marry to 2Y will marry to 3Z will marry to 1參考答案參考答案1西南交通大學(xué)西南交通大學(xué)63#include void main() char x,y,z; for(x=A;x=C;x+) for(y=A;y=C;y+) for(z=A;z=C;z+) if(x!=A&x!=C&z!=C&x!=y&x!=z&y!=z) coutX will marry to xendl; coutY

33、will marry to yendl; coutZ will marry to zendl; X will marry to BY will marry to CZ will marry to A參考答案參考答案2西南交通大學(xué)西南交通大學(xué)64課堂練習(xí)課堂練習(xí)9 9 求求100 5000之間有多少個之間有多少個各位數(shù)字之和等于各位數(shù)字之和等于5西南交通大學(xué)西南交通大學(xué)65可以采用窮舉的方法,即:可以采用窮舉的方法,即:分析分析用四重循環(huán)分別控制個位、十位、用四重循環(huán)分別控制個位、十位、百位、千位的取值百位、千位的取值循環(huán)體中判斷個、十、百、千位之循環(huán)體中判斷個、十、百、千位之和是否等于和是否等

34、于5 5 是:統(tǒng)計是:統(tǒng)計 否:不統(tǒng)計否:不統(tǒng)計西南交通大學(xué)西南交通大學(xué)66 for i 0 step 1 until i=5 do for j 0 step 1 until j=5 do for k 0 step 1 until k=5 do for m 0 step 1 until m=5 do nb=i1000+j100+k10+m if(i+j+k+m=5 and (nb100 and nb5000) then num=num+1 print nb print num算法一算法一枚舉方法枚舉方法西南交通大學(xué)西南交通大學(xué)67#include #include void main() in

35、t i,j,k,l,num=0,number; for(i=0;i=5;i+) for(j=0;j=5-i;j+) /或或j=5 for(k=0;k=5-i-j;k+) for(l=0;l=100&number=5000) num=num+1; coutsetw(8)number; coutn num=numendl; 參考參考答案答案西南交通大學(xué)西南交通大學(xué)68 for nb 100 step 1 until nb=5000 do i=nb1000取整數(shù)取整數(shù) j=(nb 100取整數(shù)取整數(shù)) )對對1010求余數(shù)求余數(shù) k=(nb 10取整數(shù)取整數(shù)) )對對1010求余數(shù)求余數(shù) m

36、=nbm=nb對對1010求余數(shù)求余數(shù) if(i+j+k+m=5) then num=num+1 print nb print num算法二西南交通大學(xué)西南交通大學(xué)69#include #include void main() int i,j,k,m,num=0; for(int nb=100;nb=5000;nb+) i=nb/1000; j=nb/100%10; k=nb/10%10; m=nb%10; if(i+j+k+m=5) num+; coutsetw(8)nb; coutn num=numendl; 參考參考答案答案西南交通大學(xué)西南交通大學(xué)70 如果一個三位數(shù)的個位數(shù)、如果一個三

37、位數(shù)的個位數(shù)、十位數(shù)和百位數(shù)的立方和等于該十位數(shù)和百位數(shù)的立方和等于該數(shù)自身數(shù)自身, , 則稱該數(shù)為水仙花數(shù)。則稱該數(shù)為水仙花數(shù)。課堂練習(xí)課堂練習(xí)1010西南交通大學(xué)西南交通大學(xué)71for i1 step 1 until i=9for i1 step 1 until i=9 for j 0 step 1 until j=9 for j 0 step 1 until j=9 for k 0 step 1 until k=9 for k 0 step 1 until k=9 mi mii ii+ji+jj jj+kj+kk kk k n100 n100i+10i+10j+kj+k if(m=n)

38、then print m if(m=n) then print m 解法一解法一: :枚舉方法枚舉方法西南交通大學(xué)西南交通大學(xué)72參考答案參考答案#include #include void main()void main() int i,j,k,m,n; int i,j,k,m,n; for(i=1;i=9;i+) for(i=1;i=9;i+)for(j=0;j=9;j+)for(j=0;j=9;j+) for(k=0;k=9;k+) for(k=0;k=9;k+) m=i m=i* *i i* *i+ji+j* *j j* *j+kj+k* *k k* *k;k; n=100 n=100

39、* *i+10i+10* *j+k;j+k; if(m=n) couttm; if(m=n) couttm; coutendl;coutendl; 西南交通大學(xué)西南交通大學(xué)73解法二解法二: :for m100 step 1 until m=999 dofor m100 step 1 until m=999 do i=m i=m100 100 取整數(shù)取整數(shù) j=(mj=(m1010取整數(shù)取整數(shù)) )對對1010求余數(shù)求余數(shù) k=mk=m對對1010求余數(shù)求余數(shù) n=in=ii ii+ji+jj jj+kj+kk kk k if(m=n) print m if(m=n) print m 西南交通

40、大學(xué)西南交通大學(xué)74#include #include void main()void main() int m,n,i,j,k; int m,n,i,j,k; for(m=100;m=999;m+) for(m=100;m=999;m+) i=m/100;j=m/10%10;k=m%10; i=m/100;j=m/10%10;k=m%10; n=i n=i* *i i* *i+ji+j* *j j* *j+kj+k* *k k* *k;k; if(m=n) couttm; if(m=n) couttm; coutendl; coutendl; 參考答案參考答案西南交通大學(xué)西南交通大學(xué)75編寫

41、程序輸出以下圖案編寫程序輸出以下圖案 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *課堂練習(xí)課堂練習(xí)11 11西南交通大學(xué)西南交通大學(xué)76 分析分析西南交通大學(xué)西南交通大學(xué)77#include #include void main( )void main( ) int i,j,n=4; int i,j,n=4; for(i=1;i=n;i+)for(i=1;i=n;i+) /輸出前輸出前4 4行圖案行圖案 for(j=1;j=30;j+)for(j=1;j=30;j+) cout cout“ ”; ; /在圖案左側(cè)

42、空在圖案左側(cè)空3030列列 for(j=1; j=8-2for(j=1; j=8-2* *i ;j+)i ;j+) cout cout“ ”; ; for(j=1; j=2for(j=1; j=2* *i-1 ;j+)i-1 ;j+) cout cout“* *”; ; coutendl; coutendl; 西南交通大學(xué)西南交通大學(xué)78 for(i=1;i=n-1;i+)for(i=1;i=n-1;i+) /輸出后輸出后3 3行圖案行圖案 for(j=1;j=30;j+) for(j=1;j=30;j+) cout cout“ ”; ; /在圖案左側(cè)空在圖案左側(cè)空3030列列 for(j=1; j=7-2for(j=1; j=7-2* *i ;j+)i ;j+) cout cout“* *”; ; coutendl; co

溫馨提示

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

評論

0/150

提交評論