C++語言程序設(shè)計 習(xí)題課_第1頁
C++語言程序設(shè)計 習(xí)題課_第2頁
C++語言程序設(shè)計 習(xí)題課_第3頁
C++語言程序設(shè)計 習(xí)題課_第4頁
C++語言程序設(shè)計 習(xí)題課_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++語言程序設(shè)計習(xí)題課2一、枚舉法(窮舉法)

“笨人之法”——把所有可能的情況一一測試,篩選出符合條件的各種結(jié)果進(jìn)行輸出。

3例10-1、百元買百雞:用一百元錢買一百只雞。已知公雞5元/只,母雞3元/只,小雞1元/3只。分析:這是個不定方程——三元一次方程組問題(三個變量,兩個方程)x+y+z=1005x+3y+z/3=100設(shè)公雞為x只,母雞為y只,小雞為z只。則0≤x≤100、0≤y≤100、0≤z≤1004#include<iostream>usingnamespacestd;intmain(){intx,y,z; cout<<"\t公雞"<<"\t母雞"<<"\t小雞"<<endl; for(x=0;x<=100;x++)for(y=0;y<=100;y++) for(z=0;z<=100;z++) if(x+y+z==100&&5*x+3*y+z/3.0==100) cout<<"\t"<<x<<"\t"<<y<<"\t"<<z<<endl; return0;}5【討論】此為“最笨”之法——要進(jìn)行101×101×101=1030301次(100多萬次)運算。?如何改進(jìn)要點:確定獨立變量個數(shù)及取值范圍——每個獨立變量用一層循環(huán)實現(xiàn)“窮舉”;確定符合題意的條件表達(dá)式——條件成立的方案,輸出結(jié)果。#include<iostream>usingnamespacestd;intmain(){intx,y,z;cout<<"\t公雞"<<"\t母雞"<<"\t小雞"<<endl;

for(x=0;x<=20;x++)

for(y=0;y<=33;y++){

if(5*x+3*y+z/3.0==100) cout<<"\t"<<x<<"\t"<<y<<"\t"<<z<<endl;} return0;}進(jìn)行21×34次減法比較z=100-x-y;7練習(xí)1、雨水淋濕了算術(shù)書的一道題,8個數(shù)字只能看清3個,第一個數(shù)字雖然看不清但可看出不是1。編程求其余數(shù)字是什么?[□*(□3+□)]2=8□□9分析:設(shè)分別用A、B、C、D、E五個變量表示自左到右五個未知的數(shù)字。其中A的取值范圍為2~9,其余取值范圍為0~9。條件表達(dá)式即為給定算式。結(jié)果:328648例10-2、張三、李四、王五三個棋迷,定期去文化宮下棋。張三每五天來一次,李四每六天來一次,王五每九天來一次。問每過多少天他們才能一起在文化宮下棋?

分析:此問題實際上是求最小公倍數(shù)的數(shù)學(xué)問題。設(shè)結(jié)果為x,其取值范圍為1→∞。因上限為無限大,計數(shù)值不能預(yù)先確定,故用while循環(huán)結(jié)構(gòu)更合適。9#include<iostream>usingnamespacestd;intmain(){intx=1; while(1) { if(x%5==0&&x%6==0&&x%9==0) { cout<<"每過"<<x<<"天他們才能一起在文化宮下棋"<<endl; break; } x++; } return0;}10練習(xí)2、輸入3個自然數(shù)a、b、c,求這三個數(shù)的最大公約數(shù)。分析:設(shè)結(jié)果為x,其取值范圍為1→min(a,b,c)。從上限開始到1,遞減尋找符合條件的x,找到的第一個x即為最大公約數(shù)。11二、歸納法(遞推法)

“智人之法”——通過分析歸納,找出從變量舊值出發(fā)求新值的規(guī)律。12例10-3、編程顯示以下圖形(共n行,n由鍵盤輸入)。****************此類題目分析的要點是:通過分析,找出每行空格、*與行號i、列號j及總行數(shù)n的關(guān)系。由此歸納出:第i行的空格數(shù)n-i個;第i行的“*”數(shù)是2i-1個。13#include<iostream>usingnamespacestd;intmain(){intn,i,j; cout<<"n=?"<<endl; cin>>n; for(i=1;i<=n;i++) { for(j=1;j<=n-i;j++) cout<<''; for(j=1;j<=2*i-1;j++) cout<<'*'; cout<<endl; } return0;}14練習(xí)3、編程顯示以下圖形(共n行,n為奇數(shù),由鍵盤輸入)。*************15例10-4、求n!(n由鍵盤輸入)intmain(){inti,s,n; cout<<"請輸入自然數(shù)n的值:"; cin>>n; s=1; for(i=1;i<=n;i++) s=s*i; cout<<n<<"!="<<s<<endl; return0;}N=17?自學(xué)P8516練習(xí)4、求∑n!(n由鍵盤輸入)要求:用雙重循環(huán)實現(xiàn)求和(外循環(huán)作累加,內(nèi)循環(huán)求階乘)

通過單循環(huán)實現(xiàn)

17三、數(shù)組的常見程序18插入數(shù)據(jù)基本思想:

1)首先要查找待插入數(shù)據(jù)在數(shù)組中的位置k;2)然后從最后一個元素開始往前直到下標(biāo)為k的元素依次往后移動一個位置;3)第k個元素的位置空出,將欲插入的數(shù)據(jù)插入。例:在有序數(shù)組a中插入數(shù)值x

inta[10]={1,2,3,4,5,6,7,9,10},n=9,x=8;

for(k=0;k<n;k++)

if(x<a[k])break;//找到插入的位置下標(biāo)為kfor(i=n-1;i>=k;i--) a[i+1]=a[i];//從最后元素開始往后移,騰出位置

a[k]=x; n=n+1;

19刪除數(shù)據(jù)基本思想:刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個位置開始向前移動;最后將數(shù)組元素減1。

例:從數(shù)組中刪除某數(shù)。inta[10]={1,2,3,4,5,6,7,8,9,10},n=10,x=8;for(k=0;k<n;k++)if(x==a[k])break;for(i=k;i<n-1;i++)a[i]=a[i+1];n-=1;20例10-5、打印下面的楊輝三角形。1111211331146411510105121分析1:先將楊輝三角形中的數(shù)據(jù)存儲到二維數(shù)組中,再輸出數(shù)組的值。第i行有i個數(shù),每行首尾兩個數(shù)都是1,即:d[i][1]=d[i][i]=1。每行中間的元素是上一行對應(yīng)位置元素及其左邊元素之和,即d[i][j]=d[i-1][j-1]+d[i-1][j]。22#include<iostream>usingnamespacestd;intmain(){ constintN=10;inti,j,d[N][N]; for(i=1;i<N;i++) { d[i][1]=d[i][i]=1; for(j=2;j<i;j++)d[i][j]=d[i-1][j-1]+d[i-1][j]; } for(i=1;i<N;i++) { for(j=1;j<i+1;j++) cout<<""<<d[i][j]; cout<<endl; } return0;}23練習(xí):用一維數(shù)組打印分析2:從第2行開始,對于任一行(假設(shè)為第i行),都可以根據(jù)上一行的數(shù)據(jù)按照如下算法得到其數(shù)據(jù): 在最右邊(即第i個位置)寫1,即d[i]=1,從第i-1個數(shù)據(jù)到第2個數(shù)據(jù)為止,每

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論