C++第6課多重循環(huán)_第1頁
C++第6課多重循環(huán)_第2頁
C++第6課多重循環(huán)_第3頁
C++第6課多重循環(huán)_第4頁
C++第6課多重循環(huán)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

多重循環(huán)第6課1例1:求三位數(shù)中的水仙花數(shù)。(若abc是水仙花數(shù),則有abc=a3+b3+c3)例如:153=13+53+33分析:采用窮舉法,從100-999中搜索,將每個數(shù)的三個數(shù)字分解出來,再計算立方和,最后與原數(shù)比較,如果相等,則是符合條件的三位數(shù).

for(m=100;m<=999;m++){a=m/100;b=m%100/10;c=m%10;if(a*a*a+b*b*b+c*c*c==m)cout<<m;}2水仙花數(shù),也可以采用另外一種方法:對三位數(shù)的三個數(shù)字進行窮舉.百位數(shù)字:1—9十位數(shù)字:0---9個位數(shù)字:0---9for(a=1;a<=9;a++)for(b)for(c)if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)cout<<a<<b<<c;這是一個三重循環(huán),外層循環(huán)做一次,內(nèi)層循環(huán)必須全部做完,具體如下:c=0(100)c=1(101)b=0……b=1c=9(109)b=2a=1b=3……b=9a=23例2:用5元錢買100只紐扣,其中金屬紐扣每只5角,有機玻璃紐扣每只1角,小鈕扣1分錢3個,編程求出種紐扣各買了多少只?方法一:for(x=1;x<=100;x++)for(y=1;y<=100;y++)for(z=1;z<=100;z++)if(x+y+z==100&&50*x+10*y+z/3.0==500)cout<<x<<y<<z;運算次數(shù):100*100*100=100萬方法二:for(x=1;x<=10;x++)for(y=1;y<=50;y++){z=100-x-y;if(50*x+10*y+z/3.0==500)cout<<x<<y<<z;}運算次數(shù):10*50=5004例3:判斷素數(shù):素數(shù)又叫質(zhì)數(shù),是指除了1與本身以外沒有另外約數(shù)的數(shù),其中1既不是素數(shù)不是合數(shù),2是自然數(shù)中最小的質(zhì)數(shù)。程序要求,輸入一個數(shù)n,判斷n是不是質(zhì)數(shù),如果是輸出”yes”,如果不是,輸出“no”。

cin>>n;k=0;if(n==1)cout<“no”;else{for(i=2;i<=n-1;i++)if(n%i==0)k=1;if(k==0)cout<<“yes”;elsecout<<“no”;}K是標記范圍可優(yōu)化至int(sqrt(n))找到一個約數(shù),可以中斷當(dāng)前循環(huán)根據(jù)標記的值,從而進行判斷請你根據(jù)優(yōu)化后的方案改寫出程序5P1119:求1—N中的素數(shù)的個數(shù).(1<=N<=10000)思路:s=0;cin>>n;

for(i=2;i<=n;i++){

判斷i是不是素數(shù),如果是s=s+1;}

cout<<s<<endl;6P1118、求1—N中的完全數(shù),所謂完全數(shù)是指因子和正好等于本身的數(shù)。如28=1+2+4+7+14,故28就是一個完全數(shù)。告訴你的是此范圍內(nèi)的完全數(shù)不可能是完全平方數(shù)。輸入:N輸出:1-N中的完全數(shù),一行一個數(shù)。數(shù)據(jù)范圍:1<=N<=10000思路:

for(i=1;i<=n;i++){求i的因子和,用S存放;

if(s==i)cout<<i<<endl;}S=0;for(j=1;j<=i/2;j++)if(i%j==0)s=s+j;上述做法的運算次數(shù)是:N*N稱為時間復(fù)雜度1秒的運算次數(shù)=2^25==3.3*10^7(8位數(shù))二重循環(huán)10000*10000,所以上面的的算法只能到100007[例3]編寫程序,在屏幕上顯示下列圖形的n行,每行的個數(shù)是m,m、n均由鍵盤輸入(m<20,n<30),如:n=4,m=6時輸出如下的圖形,第一行前面沒有空格。************************分析:若不考慮圖形的錯位關(guān)系,而直接打印一個矩形的圖形,為n行,每行M個,那么n行可用計數(shù)循環(huán)實現(xiàn)(大循環(huán)),每行的個數(shù)也可以用計數(shù)循環(huán)實現(xiàn)(小循環(huán)):

cin>>n>>m;

for(i=1;i<=n;i++){

for(j=1;j<=m;j++)

cout<<“*”;

cout<<endl;{每行結(jié)束時換行};}k=0;用來控制空格的個數(shù)for(j=1;j<=k;j++)

cout<<““;//輸出K個空格K=k+1;8[例4]輸出如下的n行(n<20)圖形,n由鍵盤輸入。如:n=6時,輸出如下的圖形,第一行前沒有空格###########{11個}#########{9個}#######{7個}#####{5個}###{3個}#{1個}分析:用二重循環(huán)解決:大循環(huán)控制行數(shù),小循環(huán)控制每行的個數(shù).第i行與個數(shù)的關(guān)系式:個數(shù)=2*i-16行5行4行3行2行1行11=6*2-19=5*2-17=4*2-1……1=1*2-1cin>>n;for(i=n;i>=1;i--){

for(j=1;j<=2*i-1;j++)

cout<<“#”;

cout<<endl;}{怎樣控制位置}9P1123:

112112321123432112345432112345654321123456765432112345678765432112345678987654321cin>>n;for(i=1;i<=n;i++){控制空格的個數(shù);

前一半;

后一半;

cout<<endl;}分析:采用二重循環(huán),大循環(huán)產(chǎn)生N行,小循環(huán)產(chǎn)生每一行.for(j=1;j<=I;j++)cout<<j;for(j=i-1;j>=1;j--)cout<<j;10P1121:N=3時,輸出如下的圖形:edcba

cbaa分析:i從大到小,第i行的個數(shù)是2*i-1,第1行字母從ea對應(yīng)的數(shù)字從5-->1,用ASCII碼來轉(zhuǎn)換,5+961+96For(j=5;j>=1;j--){chark=96+j;

cout>>k;}定義一個字符型變量K,K取一個整數(shù)值,輸出K的值的時候就會輸出ASCII碼對應(yīng)的字符。54321321111P1122135791357分析:第i行的個數(shù)是2*i-1,輸出的數(shù)字從1開始,每次加2,如果超過9,則返回1.

cin>>n;x=1;

溫馨提示

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

評論

0/150

提交評論