C++編程實例_第1頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

例313求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下特點:第1、2個數(shù)為1、1。從第3個數(shù)開始,每個數(shù)是其前面兩個數(shù)之和。#include #include using namespace std;int main( )long f1,f2;int i;f1=f2=1;for( i=1; i=20; i+ )/設備輸出字段寬度為12,每次輸出兩個數(shù)coutsetw(12)f1setw(12)f2; /每輸出完4個數(shù)后換行,使每行輸出4個數(shù)if(i%2=0) coutendl;f1=f1+f2; /左邊的f1代表第3個數(shù),是第1、2個數(shù)之和f2=f2+f1; /左邊的f2代表第4個數(shù),是第2、3個數(shù)之和return 0;例314100200間的素數(shù)#include #include #include using namespace std;int main() int m,k,i,n=0; bool prime; for(m=101;m=200;m=m+2) prime=true;k=int(sqrt(m); for(i=2;i=k;i+)if(m%i=0) prime =false; break; if(prime) cout setw(5) m; n=n+1; if(n%10=0) cout endl; cout endl;return 0;例315譯密碼#include using namespace std;int main()char c; while (c=getchar()!=n)if(c=a&c=A&cZ&cz)c=c-26;coutc;coutendl;return 0;習題:16、統(tǒng)計個數(shù)#include using namespace std;int main ()char c; int letters=0,space=0,digit=0,other=0; coutenter one line:=a & c=A & c=0 & c=9) digit+; else other+; coutletter:letters, space:space, digit:digit, other:otherendl; return 0; 17、求Sn=a+aa+aaa+aaa(n個a)的值,n由鍵盤輸入。#includeusing namespace std;int main ()int a,n,i=1,sn=0,tn=0; coutan; while (i=n) tn=tn+a; /賦值后的tn為i個a組成數(shù)的值 sn=sn+tn; /賦值后的sn為多項式前i項之和 a=a*10; +i; couta+aa+aaa+.=snendl; return 0; 18、.求1!+2!+20!、#include using namespace std;int main ()float s=0,t=1; int n; for (n=1;n=20;n+) t=t*n; / 求n! s=s+t; / 將各項累加 cout1!+2!+.+20!=sendl; return 0; 19、求“水仙花數(shù)”例153=13+33+53#include using namespace std;int main ()int i,j,k,n; coutnarcissus numbers are:endl; for (n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n = i*i*i + j*j*j + k*k*k) coutn ; coutendl;return 0; 20、找出1000之內所有的完數(shù)例如6的因子是1.2.3而6=1+2+3,所以6是完數(shù)#include using namespace std; int main() int m,s,i; for (m=2;m1000;m+) s=0; for (i=1;im;i+) if (m%i)=0) s=s+i; if(s=m) coutm is a完數(shù)endl; coutits factors are:; for (i=1;im;i+) if (m%i=0) couti ; coutendl; return 0; 21、2/1, 3/2, 5/3, 8/5, 13/8, 21/13,前20項之和#include using namespace std;int main() int i,t,n=20; double a=2,b=1,s=0; for (i=1;i=n;i+) s=s+a/b; t=a; a=a+b; / 將前一項分子與分母之和作為下一項的分子 b=t; / 將前一項的分子作為下一項的分母 coutsum=sendl; return 0; 24、輸出圖形#include using namespace std;int main() int i,k; for (i=0;i=3;i+) / 輸出上面4行*號 for (k=0;k=2*i;k+) cout*; / 輸出*號 coutendl; /輸出完一行*號后換行 for (i=0;i=2;i+) / 輸出下面3行*號 for (k=0;k=4-2*i;k+) cout*; / 輸出*號 coutendl; / 輸出完一行*號后換行 return 0;習題:1、求最大公約數(shù)和最小公倍數(shù),用主函數(shù)條用兩個函數(shù) #include using namespace std;int main() int hcf(int,int); int lcd(int,int,int); int u,v,h,l; cinuv; h=hcf(u,v); coutH.C.F=hendl; l=lcd(u,v,h); coutL.C.D=lu) t=u;u=v;v=t; while (r=u%v)!=0) u=v; v=r; return(v); int lcd(int u,int v,int h) return(u*v/h); 3、判別素數(shù)的函數(shù) #include using namespace std;int main() int prime(int); /* 函數(shù)原型聲明 */ int n; coutn; if (prime(n) coutn is a prime.endl; else coutn is not a prime.endl; return 0; int prime(int n) int flag=1,i; for (i=2;in/2 & flag=1;i+) if (n%i=0) flag=0; return(flag); 4、.求a!+b!+c!的值,用一個函數(shù)fac(n)求n!。4#include using namespace std;int main() int fac(int); int a,b,c,sum=0; coutabc; sum=sum+fac(a)+fac(b)+fac(c); couta!+b!+c!=sumendl; return 0; int fac(int n) int f=1; for (int i=1;i=n;i+) f=f*i; return f; 7、.驗證哥德巴赫猜想:一個不小于6的偶數(shù)可以表示為兩個素數(shù)之和。7#include #include using namespace std;int main()void godbaha(int); int n; coutn; godbaha(n); return 0;void godbaha(int n) int prime(int); int a,b; for(a=3;a=n/2;a=a+2) if(prime(a) b=n-a; if (prime(b) coutn=a+bendl; int prime(int m)int i,k=sqrt(m); for(i=2;ik) return 1; else return 0;11、用遞歸方法求f(n)=12+22+n2#include using namespace std;int main() int f(int); int n,s; coutn; s=f(n); coutThe result is sendl; return 0; int f(int n) if (n=1) return 1; else return (n*n+f(n-1);例52 用數(shù)組Fibonacci數(shù)列#include #include using namespace std;int main () int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0)coutendl; coutsetw(8)fi; coutendl; return 0;例5.3用冒泡法對10個數(shù)排序#include using namespace std;int main( ) int a10; int i,j,t; coutinput 10 numbers :endl; for (i=0;iai; coutendl; for (j=0;j9;j+) /共進行9趟比較 for(i=0;iai+1) /如果前面的數(shù)大于后面的數(shù) t=ai;ai=ai+1;ai+1=t; /交換兩個數(shù)的位置,使小數(shù)上浮 coutthe sorted numbers :endl; for(i=0;i10;i+) /輸出10個數(shù) coutai ; coutendl; return 0;例54將二維數(shù)組行列元素互換,存到另一個數(shù)組中a=1 2 3 5 6 b=1 42 53 6#include using namespace std;int main() int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for(i=0;i=1;i+) for(j=0;j=2;j+) coutaij ; bji=aij;coutendl; coutarray b:“endl; for(i=0;i=2;i+) for(j=0;j=1;j+) coutbij ; coutendl; return 0;例55求 34 二維數(shù)組中最大元素值及其行列號#include using namespace std;int main() int i,j,row=0,colum=0,max; int a34=5,12,23,56,19,28,37,46,-12,-34,6,8; max=a00; /使max開始時取a00的值 for(i=0;i=2;i+) /從第0行第2行for(j=0;jmax) /如果某元素大于max max=aij; /max將取該元素的值row=i; /記下該元素的行號icolum=j; /記下該元素的列號jcoutmax= max ,row=row ,colum=columendl;return 0;例5.7用選擇法對數(shù)組中10個整數(shù)按由小到大排序#include using namespace std;int main( )void select_sort(int array,int n); /函數(shù)聲明int a10,i; coutenter the originl array:endl;for(i=0;iai; coutendl; select_sort( a ,10); /函數(shù)調用,數(shù)組名作實參 coutthe sorted array:endl; for(i=0;i10;i+) /輸出10個已排好序的數(shù) coutai ; coutendl; return 0;void select_sort(int array,int n) /形參array是數(shù)組名 int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(arrayjarrayk) k=j; t=arrayk;arrayk=arrayi;arrayi=t; 習題:6、打印出楊輝三角(要求打印出10行)#include #include using namespace std;int main() const int n=11; int i,j,ann; for (i=1;in;i+) aii=1; ai1=1; for (i=3;in;i+) for (j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; for (i=1;in;i+) for (j=1;j=i;j+) coutsetw(5)aij ; coutendl; coutendl; return 0;C語言部分1. 編程計算1, 1+2, 1+2+3, , 1+2+3+n各項值的積答案:#include using namespace std;void main()int i,n,mul=1,sum=0;coutn;for (i=1;i=n;i+)sum+=i;mul*=sum;coutThe multiple is:mulj)return i;else return j;char max(char c1,char c2,char c3)char ch;if (c1c2)ch=c1;else ch=c2;if (c3ch)ch=c3;return ch;float max(float x,float y)if (xy)return x;else return y;double max(double x1,double x2,double x3)double y;if (x1x2)y=x1;else y=x2;if (x3y)y=x3;return y;3.請編寫一個函數(shù)int find(char s,char t),該函數(shù)在字符串s中查找字符串t,如果找到,則返回字符串t在字符串s中的位置(整數(shù)值);否則返回-1。注意:用數(shù)組方式及兩重循環(huán)來實現(xiàn)該函數(shù)。答案:int find(char s,char t)int i,j,slen,tlen;slen=strlen(s);tlen=strlen(t); i=0;j=0;while (islen & j=tlen)return i-tlen+1;else return -1;4.寫一程序,將字符串a的所有字符傳送到字符串b中,要求每傳送3個字符后放一個空格,例如,字符串a為”abcdefg”,則b為”abc deg g”。答案:#include #include #define N 40void fun(char s,char t) int i=0,j=0; while(si) tj=si; i+; j+; if (i)%3=0) tj= ; j+; tj=0;main() char aN,bN; printf(請輸入原始字符串a: ); gets(a); fun(a,b); printf(加入空格后的字符串b: ); puts(b);5. 編程判斷一個數(shù)是否為素數(shù)。答案:#include #include using namespace std;int prime(int m)int i,flag=1;for (i=2;i=int(sqrt(m);i+)if (m%i=0)flag=0;break; return flag;int main(void)int n;coutn;if (prime(n)coutn是素數(shù)!endl;elsecoutn不是素數(shù)!endl;return 0;6.編程打印九九乘法表: 11=1 12=2 22=4 13=3 23=6 33=9 .答案:#include using namespace std;void main()int i,j;for (i=1;i=9;i+)for (j=1;j=i;j+)printf(%1d*%1d=%2d ,j,i,i*j); printf(n);7.請編寫一個程序,程序的功能是打印以下圖案。 * * * * * *答案:#include using namespace std;void main()int i,j;for (i=1;i=4;i+)for (j=1;j=4-i;j+)cout ;for (j=1;j=2*i-1;j+)cout*;cout=1;i-)for (j=1;j=4-i;j+)cout ;for (j=1;j=2*i-1;j+)cout*;coutendl;8. 寫出下面程序的運行結果:#include void average(float*p, int n)int i;float sum=0;for(i=0;in;i+,p+)sum+=(*p);coutsum/n;void main()float score22= 1,2,3,4 ;average(*score, 4);答案:2.5C+部分1定義一個滿足如下要求的Date類。(1)用下面的格式輸出日期:日/月/年(2)可運行在日期上加一天操作;(3)設置日期。答案:#include using namespace std; extern int i = 0; class Date public: set(int y,int m, int d); add(); print(); private: int year; int month; int day; ; Date:set(int y, int m, int d) year = y; month = m; day = d; Date:add() switch(month) case 1: case 3: case 5: case 7: case 8: case 10: if(day 31) day += 1; else if(day = 31) day = 1; month += 1; break; case 12: if(day 31) day += 1; else if(day = 31) day = 1; month = 1; year += 1; break; case 4: case 6: case 9: case 11: if(day 30) day += 1; else if(day = 30) day = 1; month += 1; break; case 2: if(year % 4 = 0 & year % 100 != 0 | year % 400 = 0) if(day 29) day += 1; else if(day = 29) day = 1; month+= 1; else if(day 28) day += 1; else if(day = 28) day = 1; month += 1; break; Date:print() cout day / month / year endl; void main() Date d1; int year; int month; int day; cout year month day; d1.set(year, month, day); d1.print(); d1.add(); cout 下一天是: ; d1.print(); 2定義一個時間類Time,能提供和設置由時、分、秒組成的時間,并編出應用程序,定義時間對象,設置時間,輸出該對象提供的時間。答案:/Time.h class Time public: Time();Time();bool SetTime(int h,int m,int s); void GetTime(int &h,int &m,int &s); void Print(); private: int iHour,iMinute,iSecond;/*/Time.cpp#include #include Time.h using namespace std;Time:Time()iHour=1;iMinute=1;iSecond=1;Time:Time()bool Time:SetTime(int h,int m,int s)if(h23) return false; if(m59) return false; if(s59) return false; iHour =h;iMinute= m;iSecond =s;return true; void Time:GetTime(int &h,int &m,int &s)h=iHour;m=iMinute;s=iSecond;void Time:Print()coutiHour:iMinute:iSecondendl; /*/mainfunction.cpp#include #include Time.husing namespace std;void main() Time t; t.SetTime(23,44,59);t.Print();3. 編寫一個矩形的類,要求類中具有長和寬2個數(shù)據(jù)成員,具有構造函數(shù)、計算矩形的面積即及周長這3個成員函數(shù)。答案:class rectanglefloat width;float heigth;public:rectangle(float w, float h)width=w;heigth=h;float area()return width*heigth;float circulm()return 2*(width+heigth);4. 設計一個人的類,要求包含姓名、身份證號、年齡、以及人的總數(shù)和所有人的平均年齡這5個數(shù)據(jù)成員,然后編寫一個測試程序,輸入n個人的信息(姓名、身份證號和年齡),要求輸出這些人的信息和平均年齡。 答案:#include#includeusing namespace std;const int n=3;class Person private: char name20; char id18; int age; public: static int count; /人數(shù) static float aveage; Person(void) Person(const char* names,char *ids,int ages) strcpy(name,names);/初始化姓名 strcpy(id,ids); age = ages;/初始化年齡 aveage+=age; count+; void display() cout姓名:nameendl; cout身份證:idendl; cout年齡:ageendl; friend void ModifyAveage();/修改平均年齡的友元函數(shù);int Person:count = 0;float Person:aveage=0;void ModifyAveage()Person:aveage=Person:aveage/Person:count;void main() int ages,i; char namestr20,idstr18; Person pern; for (i=0;in;i+) coutnamestr; coutidstr; coutages; Person temp(namestr,idstr,ages); peri=temp; ModifyAveage(); for (i=0;in;i+) peri.display(); cout人的數(shù)量:Person:countendl; cout平均年齡:Person:aveageendl;5. 編寫一個圓的類,再使用派生類的機制,編寫一個圓柱的類,求每個類都包含具有初始化功能的構造函數(shù)和相關數(shù)據(jù)的輸出函數(shù)。答案:#include #define pi 3.1416using namespace std; class circle protected: float r; float area; public: circle() r=0; circle(float radius)r=radius; void print() area=r*r*pi; coutr=r area=areaendl; ; class column:circle protected: float h; float v; public : column(float radius,float height):circle(radius) h=height; void print() circle:print(); couth=h volume=area*hendl; ; void main() column col (3.0,2.0); col.print(); 6.重載一個函數(shù)模板,要求它可以返回兩個值中的較大者,也可以求三個數(shù)的最大值。答案:/ 求兩個任意類型值中的最大者template inline T const& max (T const& a, T const& b) return a b ? b : a;/ 求3個任意類型值中的最大者template inline T const& max (T const& a, T const& b, T const& c) return :max (:max(a,b), c);7.下面是整型安全數(shù)組類的一部分:試完善類的定義,使下段程序能夠正常運行且不會出現(xiàn)內存泄漏。#include class Arraypublic:Array(int x)count=x;p=new intcount;int & operator (int x)return *(p+x);protected:int count;int *p;答案:#include class Arraypublic:Array(int x); Array(Array &); Array(); void SetAt(int pos, int value); int GetAt(int pos); protected:int count;int *p;Array:Array(int x)count=x;p=new intcount;Array:Array(Array &a)int i;count=a.count;p=new intcount;for (i=0;icount;i+) *(p+i)=*(a.p+i);Array:Array()delete p;void Array:SetAt(int pos, int value)*(p+pos)=value;int Array:GetAt(int pos)return *(p+pos);8、編寫類String 的構造函數(shù)、析構函數(shù)和賦值函數(shù)已知類String 的原型為:class Stringpublic:String(const char *str = NULL); / 普通構造函數(shù)String(const String &other); / 拷貝構造函數(shù) String(void); / 析構函數(shù)String & operate =(const String

溫馨提示

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

評論

0/150

提交評論