資源描述:
《循環(huán)例題講解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、習(xí)題5.7給出一個(gè)不多于5位的正整數(shù),要求:1.輸出它是幾位;2.分別打印出每一位數(shù)字;3.按逆序打印出各位數(shù)字;例如原數(shù)為321,應(yīng)輸出123。??分析:對于要求1,可用嵌套的if語句判斷它是幾位(10000~99999為5位,1000~9999為4位,....),將位數(shù)記在變量(如w)中;對于要求2,先分離出整數(shù)的每一位數(shù)字,再打印出來。分離可用以下公式實(shí)現(xiàn):p5=a/10000;???p4=a%10000/1000;p3=a%1000/100;???p2=a%100/10;???p1=a%10;打印可用switch語句根據(jù)w的值從不同
2、的位數(shù)開始輸出;對于要求3,無論幾位數(shù),輸出時(shí)都要從p1開始。習(xí)題5.9輸入四個(gè)變量,要求按大小順序輸出。分析:設(shè)四個(gè)變量為a,b,c,d,輸入時(shí)大小順序不定,輸出時(shí)按大小順序排列有兩種情況:一種是a,b,c,d順序固定,可改變變量的值,另一種是要求不改變它們原來的值,a,b,c,d順序可變。先看第一種情況:若輸出時(shí)按a,b,c,d順序排列,則應(yīng)保證a的值最大,b的值第二,c的值第三,d的值最小。要實(shí)現(xiàn)這一點(diǎn),就要將a,b,c,d進(jìn)行排列。排列可這樣進(jìn)行:先將a分別與b、c、d比較,遇大者則與a交換值,這一輪比較結(jié)束后,a中就是最大值了,然
3、后再將b與d、c比較,遇大者則與b交換值,這一輪使b比c、d都大,剩下c、d再做一次比較,大者存在c中,d中就是最小值。再看第二種情況:a,b,c,d的全排列P4=4!,即共有24種排列順序,那么就可形成24個(gè)分支,分別按不同的順序輸出。這種做法程序很長,這里不寫了,下面給出三個(gè)變量的輸出程序,供參考。a,b,c的大小關(guān)系有六種,輸出順序就有六種:大小關(guān)系:輸出順序:a>b>ca,b,ca>c>ba,c,bb>a>cb,a,cb>c>ab,c,ac>a>bc,a,bc>b>ac,b,a按照題目要求,應(yīng)形成六個(gè)分支。由于產(chǎn)生分支的條件不是單一
4、的比較相等關(guān)系,因此應(yīng)采用if語句,而不能用switch語句??梢圆捎貌⒘械膇f語句,也可以采用嵌套的if語句。并列的if語句如下:if(a>b&&b>c)printf(“%d%d%d”,a,b,c);if(a>c&&c>b)printf(“%d%d%d”,a,c,b);if(b>a&&a>c)printf(“%d%d%d”,b,a,c);if(b>c&&c>b)printf(“%d%d%d”,b,c,a);if(c>a&&a>b)printf(“%d%d%d”,c,a,b);if(c>b&&b>a)printf(“%d%d%d”,c,b,
5、a);這種寫法其實(shí)沒有必要。因?yàn)槿绻谝粋€(gè)條件成立(符合第一種順序),則不會(huì)再滿足其它條件,本可不再作其它判斷,但是,寫成并列的if語句,就要逐個(gè)判完。若改成嵌套的if語句,就可避免重復(fù)判斷。if(a>b)if(a>c){printf("t%d",a);/*確定a最大*/if(b>c)printf("%d%d",b,c);/*a>b>c*/elseprintf("&d%d",c,b);}/*a>c>b*/else/*a>b成立,aa>b*/else/*否定
6、a>b,即b>a*/if(b>c){printf("t%d",b);/*確定b最大*/if(a>c)printf("%d%d",a,c);/*b>a>c*/elseprintf("%d%d",c,a);}/*b>c>a*/else/*a>b不成立,b>c也不成立*/printf("t%d%d%d",c,b,a);/*c>b>a*/}習(xí)題6.8有一分?jǐn)?shù)序列:求出這個(gè)數(shù)列的前20項(xiàng)之和。?分析:這個(gè)數(shù)列各項(xiàng)之間的關(guān)系是后一項(xiàng)的分子為前一項(xiàng)的分子分母之和,后一項(xiàng)的分母為前一項(xiàng)的分子。設(shè)f2為分子,f1為分母,s存放累加和,構(gòu)造循環(huán)
7、每次改變f1和f2的值,再累加到s中。要注意的是,每次改變f1和f2時(shí),應(yīng)先將前項(xiàng)分子f2保留到一個(gè)變量(比如f)中,再用f的值=>后項(xiàng)分母f1,即f=f2;f2=f1+f2;f1=f;s=s+f2/f1;才能得到正確結(jié)果。習(xí)題6.2輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。??分析:構(gòu)造循環(huán),每次輸入一個(gè)字符,直到遇到回車鍵。例如這樣:while((c=getchar())!='')循環(huán)體中對變量c進(jìn)行判斷,并根據(jù)其所屬字符類型進(jìn)行分類計(jì)數(shù)。習(xí)題6.10猴子吃桃子問題,猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還
8、不過癮,又多吃了一個(gè),第二天早上又將剩下的桃子吃掉一半,又多吃了一個(gè)。以后每天早上都吃了前一天剩下的一半零一個(gè)。到第10天早上再想吃時(shí),就只剩一個(gè)桃子了。求第一天共摘多少桃子。分