c++基礎例題100道.doc_第1頁
c++基礎例題100道.doc_第2頁
c++基礎例題100道.doc_第3頁
c++基礎例題100道.doc_第4頁
c++基礎例題100道.doc_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、/* 1 、打印出所有的 水仙花數(shù) 。所謂 水仙花數(shù) 是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如, 153 是一水仙花數(shù),因為 153 = 13 + 53 + 33 。 */ #includevoid main()int i, a=0, b=0, c=0;for(i=100;i1000;i+)a=i%10;b=i/10%10;c=i/100%10;if(a*a*a+b*b*b+c*c*c=i)couti=iendl;/* 2、一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 完數(shù) 。例如, 6 的因子為1、2、3,而 6 = 1 + 2 + 3,因此 6 是 完數(shù) 。編程序找出1000 之

2、內(nèi)的所有完數(shù),并按下面的格式輸出其因子:6 - 1, 2,3 */#includevoid main()int i,j,sum=0,a50,k,t;for(i=1;i=1000;i+)sum=0;for(j=1;ji;j+)if(i%j=0)sum+=j;ak+=j;t=k;if(sum=i)couti;for(k=0;kt;k+)coutak;if(kt-1)cout,;coutendl;k=0;/* 3、求 Sn=a+aa+aaa+aaa 之值,其中a 是一個數(shù)字。例如:2+22+222+22222 (此時 n=5), n 由鍵盤輸入。 */ #includevoid main()doub

3、le a,sn=0.0,sum=0.0; int n,i;couta;coutn;sn=a;sum=a;for(i=2;i=n;i+)sum=sum*10+a;sn+=sum;coutSn=snendl;/* 4、一球從100 米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地時,共經(jīng)過了多少米?第10 次反彈多高? */#includevoid main()double h1=100,h2=100,sum=0.0;int i;for(i=1;i=10;i+)sum+=h2;h1=h1/2.0;h2=h1*2;coutsum=sumh1=h1endl;/* 5、猴子吃桃問

4、題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉了一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10 天早上想再吃時,見只剩一個桃子了。求第一天共摘了多少桃子。*/#includevoid main()int number,i;number=1;for(i=10;i1;i-)number=(number+1)*2;coutnumber=numberendl;第4章函數(shù)/* 1、寫一函數(shù)用 氣泡法 對輸入的10 個字符按由小到大的順序排列。*/#includevoid main()int i,j,temp,a10;coutple

5、ase input ten numbers:n;for(i=0;iai;for(i=0;i10;i+) /for(j=i+1;jaj)temp=aj;aj=ai;ai=temp;coutresort result=;for(i=0;i10;i+)coutai 1) */#includedouble fun (double,double);void main()double n,x,sum;coutinput n and xnx;sum=fun(n,x);coutPn(x)=sum1)return (2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1)/n1;/

6、* 3、編寫一函數(shù),由實參傳來一字符串,統(tǒng)計此字符串中字母、數(shù)字、空格、和其它字符的個數(shù),并在主函數(shù)中輸入字符串以及輸出上述結(jié)果。*/#includevoid judge(char a);void main()const int size=100;char asize;cin.getline(a,size);judge(a);void judge(char a100)/判斷字符類型int letter=0,number=0,others=0,i=0;while(ai!=0)if(ai=a&ai=A&ai=0 & ai=9) number+;/else others+;/統(tǒng)計其他數(shù)個數(shù)i+;統(tǒng)計

7、數(shù)字個數(shù)coutletter=letter number=number others=othersendl;/* 4、給出年、月、日,計算該日是該年的第幾天。*/#includeint lead(int);void main()int ly,year,month,date,i,sum=0;coutyearmonthdate;int a12=31,0,31,30,31,30,31,31,30,31,30,31;ly=lead(year);if (ly=1)a1=29;/366else a1=28;/365天天for(i=0;imonth-1;i+) /當前月之前所有月天數(shù)累加和sum+=ai;s

8、um+=date; /加上當前月天數(shù)cout 你輸入的日期是當年的第sum 天 ;int lead(int y)/判斷閏年if(y%4=0&y%100!=0)|(y%400=0) return 1;/是閏年else return 0;/不是閏年/* 5、寫兩個函數(shù), 分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結(jié)果,兩個整數(shù)由鍵盤輸入。*/#includeint cdivisor(int,int);int cmultiple(int,int,int);void main()int x,y,d,m;coutxy;d=cdivisor(x,y);m=cmultiple(x

9、,y,d);coutcommon divisor is dendlcommon multiple is mendl;int cdivisor(int x1,int y1)/最大公約數(shù)int r,temp;if (x1y1)temp=x1;x1=y1;y1=temp;while(x1%y1)/當較大數(shù)除以較小數(shù)余數(shù)等于0 時,較小數(shù)為最大公約數(shù)r=x1%y1;x1=y1;y1=r;return y1;int cmultiple(int x2,int y2,int d1)/最小公倍數(shù)return x2*y2/d1;/兩數(shù)相乘結(jié)果除以它們的最大公約數(shù)為最小公倍數(shù)/* 6、寫一函數(shù),將兩個字符串連接。

10、*/#include#includevoid main()const int size=100;char asize,bsize;coutinput two string:endl;cin.getline(a,size);cin.getline(b,size);strcat(a,b);couta=aendl;/* 7、寫一函數(shù),將一個字符串的元音字母復制到另一個字符串,然后輸出。*/#include#includevoid scpy(char *,char *);void main()const int size=100;char asize=Hello world;char bsize=Ne

11、t;couta= ab= bendl;scpy(a,b);couta= aendl;void scpy(char *p,char *q)while(*q!=0)if(*q=a|*q=A|*q=e|*q=E|*q=i|*q=I|*q=o|*q=O|*q=u|*q=U)*p+=*q;q+;/* 8、寫一函數(shù), 輸入一個四位數(shù)字, 要求輸出這 4 個數(shù)字字符, 但每兩個數(shù)字間空一空格。如輸入 1990,應輸出 1 9 9 0 。 */#include#includevoid outs(char a);void main()const int size=10;char asize;cin.getlin

12、e(a,size);outs(a);void outs(char a10)int i;if(strlen(a)=4)for(i=0;i4;i+)coutai ;else coutinput error.endl;第5章數(shù)組/* 1、將一個數(shù)組中的值按逆序重新存放,例如,原來順序為:a、 b、 c、 d。要求改為:d、c、 b、a。 */#includevoid back(char *);void main()char a50=abcdefg;couta=aendl;back(a);#includevoid back(char *p)int i=0;while(*p!=0)p+;/把指針定位到字

13、符串末尾i+;/統(tǒng)計字符個數(shù)cout0;i-)/逆序輸出p-;cout*p;coutendl;/* 2、打印出楊輝三角形(要求打印出前15 行)。( 楊輝三角最本質(zhì)的特征是,它的兩條斜邊都是由數(shù)字1 組成的,而其余的數(shù)則是等于它肩上的兩個數(shù)之和。) */#includevoid tri(int a15);void main()int i,j,a1515;tri (a);couta= ;for(i=0;i15;i+)/遍歷整個數(shù)組for(j=0;j=i;j+)cout=1&aij=9)/當輸出個位數(shù)之后輸出4 個空格保持整齊cout=10&aij=99)/當輸出十位數(shù)之后輸出3 個空格保持整齊c

14、out=100&aij=999)/當輸出百位數(shù)之后輸出2 個空格保持整齊cout ;else cout ;/當輸出百位數(shù)之后輸出1 個空格保持整齊coutendl;/每行輸出結(jié)束后換行void tri(int a1515)int i,j;for(i=0;i15;i+)for(j=0;j=i;j+)if(j=0|j=i)/三角形第一列和對角線被賦值為1aij=1;else aij=ai-1j-1+ai-1j;/算出其余的數(shù)組元素/* 3、編一程序,將兩個字符串連接起來,不要用strcat函數(shù)。*/#include#includevoid scat(char *,char *);void main

15、()const int size=100;char asize=Hello;char bsize=Bye;couta=ab=bendl;scat(a,b);couta=a after link a and bendl;void scat(char *p,char *q)while(*p!=0)/確定數(shù)組a 的插入位置p+;while(*q!=0)*p=*q;p+;q+;/* 4、打印 魔方陣 。所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。例如:三階魔方陣:8 1 63 5 74 9 2要求打印由1 到 n2 的自然數(shù)構(gòu)成的所有魔方陣。*/ 方法一:輸出 N 介魔方陣,但每介

16、只輸出一種。#includevoid square(int a10,int k,int n);void main()int n,i,j,k,a1010=0;coutinput an odd number:n;k=n/2;/確定第一個數(shù)列數(shù)square(a,k,n);for(i=0;in;i+)for(j=0;jn;j+)couttaij;coutendl;void square(int a10,int k,int n)int i,j;for(i=1,j=0;i=n*n;i+,j-,k+)/n為階數(shù),從1 開始給數(shù)組賦值if(j=n)/當數(shù)組行列都越出范圍時候,確定數(shù)組正確位置j+=2;k-=1

17、;else if(j=n)/當數(shù)組列越出范圍時候,確定數(shù)組正確位置k-=n;else if(ajk!=0)/當數(shù)組原位置有數(shù)時候,確定數(shù)組位置j+=2;k-=1;ajk=i;/ 方法二:輸出 N 介魔方陣所有魔方陣。#include #include #include using namespace std;void printA(int *p,int n)/輸出這個n 階魔方陣coutendl下面是一個 n 階魔方陣 :endl;int i,j;for(i = 0;i n;i+)for(j = 0;j n;j+)coutsetw(4)pij;coutendl;coutendlendl;boo

18、l Judge(int *p,int n)/判斷是否為n 階魔方陣int i,j,sum = 0,NowSum = 0;bool YesOrNo = true;for(j = 0;j n;j+)/第一行總和sum += p0j;for(i = 1;i n;i+)/判斷每行總和是否相等NowSum = 0;for(j = 0;j n;j+)NowSum += pij;if(NowSum != sum)YesOrNo = false;goto END;for(i = 0;i n;i+)/每列是否相等NowSum = 0;for(j = 0;j n;j+)NowSum += pji;if(NowSu

19、m != sum)YesOrNo = false;goto END;NowSum = 0;for(i = 0,j = 0;i n,j = 0,j n;i-,j+)/次對角線是否相等NowSum += pij;if(NowSum != sum)YesOrNo = false;goto END;END:return YesOrNo;void combination(int *p,int n,int *a)/求 m = n*n 個數(shù) (1,2,3.m)的全排列int m = n*n;static int Num = 0;int *b_val = new intm;int c = 0,k,i,j;b_

20、valc = -1;/一維數(shù)組首地址的值賦-1 c0-1while(b_val0 m) /-1if(+b_valc m) /分別從 0 開始累加每個元素值,并限制不超出最大階數(shù)/b001011202122.66.70.7780.88判斷魔方 89 012345678/7880.87判斷魔方 88 89 012345687/67.70.7688 012345768/ 012345786/012345867 ./ 876543210for(k = 0;k c;k+) /是否與前面數(shù)字重復,如有重復元素跳出,否則使K下標等于C 下標if(b_valk = b_valc)break;if(k = c)

21、/如果沒有重復元素,就可以確定當前元素值,并繼續(xù)排列下一個下標的數(shù)組元素if(c+1 m) /1 2 3.7 8如果不滿足條件,則生成了一組排列方式,否則繼續(xù)排列下一個元素/ 8+c; /1 2 3.7 8b_valc = -1;/continue;else /生成了一組排列方式k = -1;for(i = 0;i n;i+)for(j = 0;j n;j+)pij = ab_val+k; /a0-a8/ 判斷是否為n 階魔方陣if(Judge(p,n)printA(p,n);elsec-;delete b_val;void evaluate(int *p,int n)/給 n 階方陣的元素賦

22、值int i;int *AllNum = new int3*3;for(i = 1;i = n*n;i+)AllNumi - 1 = i;combination(p,n,AllNum);delete AllNum;void main()int i,n,*a;string s;do/ 輸入n 階方陣的階數(shù)couts;nn 階方陣的階數(shù)n( 退出程序按e 或E鍵) : ;if(!strcmp(s.c_str(),e) | !strcmp(s.c_str(),E)break;else if(s.find_first_not_of(0123456789) != string:npos)cout 請輸入

23、有效的數(shù)字,不能含有非數(shù)字的字符。 endl; continue;elsen = atoi(s.c_str();if(n1)cout= 1 。 endl;continue;/ 分配內(nèi)存a = new int*n;for(i = 0; i n; i+)ai = new intn;cout 正在運算,請等待。 。 endl;/ 給 n 階方陣的元素賦值 evaluate(a,n);cout 運算結(jié)束! endl; for(i = 0; i n; i+)delete ai;delete a;while(1);return;/* 5、求一個3x3 矩陣對角線元素之和。*/#includeint dia

24、(int a3);void main()int i,j,sum,a33=2,3,5,6,2,3,1,9,0;couta= ;for(i=0;i3;i+)for(j=0;j3;j+)coutaij;coutendl;sum=dia(a);coutnsum=sumendl;int dia(int a33)int i,j,sum=0;for(i=0;i3;i+)/主對角線之和for(j=i;j=i;j+)sum+=aij;for(j=0;j3;j+)/另一個對角線之和for(i=2-j;i=2-j;i+)if(i!=j)/避免重復累加兩個對焦向重合的元素sum+=aij;return sum;/返回

25、對角線員素之和/* 6、編寫一個程序, 將字符數(shù)組 s2 中的全部字符拷貝到字符數(shù)組 s1 中。不用 strcpy 函數(shù)??截悤r, 0 也要拷貝過去。 0 后面的字符不拷貝。 */#includevoid scopy(char a,char b);void main()int i;char a10;char b10=Hello;scopy(a,b);for(i=0;ai!=0;i+)coutai;coutendl;void scopy(char a,char b)int i;for(i=0;bi!=0;i+)ai=bi;ai=0;/* 7、用篩選法求 100 之內(nèi)的素數(shù)。(所謂素數(shù)就是除了整除

26、,這種數(shù)稱作素數(shù) ( 也稱質(zhì)數(shù) ) 。) */1 和它本身以外,不能再被別的整數(shù)#includevoid main()int i,j;for(i=1;i=100;i+)for(j=2;ji;j+)/判斷素數(shù)if(i%j!=0);else break;/if(i=j)/不是素數(shù)相等為素數(shù)cout i;coutendl;/* 8、用選擇法對10 個整數(shù)排序。 */#includevoid csort(int a10);void main()int i;int a10=6,4,2,7,9,0,1,6,3,0;for(i=0;i10;i+)/輸出原數(shù)組數(shù)據(jù)順序coutai;coutendl;csort

27、(a);for(i=0;i10;i+)/輸出排序后的順序coutai;coutendl;void csort(int a10)/排序int i,j,k,temp=0;for(i=1;i10;i+)k=i;for(j=k+1;jaj)k=j;if(k!=i)temp=ai;/把數(shù)放到正確位置ai=ak;ak=temp;第 6章指針/* 1、在主函數(shù)中輸入10 個字符串。用另一函數(shù)對它們排序。然后在主函數(shù)輸出這10 個已排好序的字符串。 (用指針實現(xiàn))*/#includevoid psort(int *p);void main()int i,a10;coutplease input ten num

28、bers:n;for(i=0;iai;psort(a);coutresort result=;for(i=0;i10;i+)coutai ;void psort(int *p)int i,j,temp;for(i=0;i10;i+) /每循環(huán)一次確定數(shù)組中一個數(shù)的位置for(j=i+1;jpj)temp=pj;pj=pi;pi=temp;/* 2、輸入一個字符串,內(nèi)有數(shù)字和非數(shù)字字符,如A123x456 1233?8997jhlkll將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到一數(shù)組些數(shù)。 */a 中,統(tǒng)計共有多少個整數(shù),并輸出這#include#include#include int charg

29、e(int *,char *);void main()int a50,i,numb;char b50;coutplease input a character string:endl;cin.getline(b,50);system(cls);coutyour character string is ;cout.write(b,strlen(b)endl;numb=charge(a,b);for(i=0;inumb;i+)cout ai=ai;coutendltotal numbers=numb=0&*p=0&*p=9)/判斷是否有連續(xù)字符型整數(shù)*q=(*q)*10+(*p)-0);/將連續(xù)字

30、符型整數(shù)轉(zhuǎn)換成一個整型整數(shù)賦值給新數(shù)組p+;q+;numb+;/ 統(tǒng)計整數(shù)的個數(shù)return numb;/* 3、用指向指針的指針的方法對5 個字符串排序并輸出。*/#include #include void sort(char *str);void main()int i;char *string5;cout 輸入 5 個字符串: endl;for(i=0;i5;i+)stringi = new char10;cin.getline(*(string+i),50);sort(string);for(i=0;i5;i+)delete stringi;void sort(char *str)i

31、nt i=0,j;char *p=0;for(i=0;i4;i+)for(j=i+1;j5;j+)if(strcmp(*(str+i),*(str+j)0)p=*(str+i);*(str+i)=*(str+j);*(str+j)=p;coutafter sort the chars :endl;for(i=0;i5;i+)cout*(str+i)endl;/* 4、統(tǒng)計一字符串在另一個字符串中出現(xiàn)的次數(shù)。*/#include#includeint change(char *,char *);void main()int sum;char a10=dog;char b20=sdlkdogsdd

32、ydodog;cout.write(a,10)endl;cout.write(b,20)endl;sum=change(a,b);coutsum=sumendl;int change(char *p,char *q)int sum=0,i=0;while(*q!=0)while(*p=*q&*p!=0)/對比是否含有相等字符串*p+;*q+;i+;if(*p=0)sum+=1;/ 含有字符串個數(shù)p=p-i;/q=q-i;/i=0;/q+;第一個字符串重新定位第二個字符串重新定位重新累加移動次數(shù)return sum;/* 5、有 n 個整數(shù) , 使其前面各數(shù)順序向后移m從鍵盤輸入。 */#inc

33、lude#includevoid charge(int a,int,int);void main()m個位置, 最后m個數(shù)變成最前面的m個數(shù) .n和int i,n,m,a50;coutn;coutm;cout 請輸入整數(shù): ;for(i=0;iai;cout 您輸入的整數(shù)為:;for(i=0;in;i+)coutai ;coutendl;charge(a,n,m);cout 移動后的整數(shù)為:;for(i=0;in;i+)coutai ;coutendl;void charge(int a,int n, int m)/n為整數(shù)個數(shù),向右移動m個位置int i,j;for(j=0;j=0;i-)/移動一個位置就要移動每一個數(shù)組元素ai+1=ai;a0=an;/* 6、有n 個人圍成一圈,順序排號。從第1 個人開始報數(shù)(從1 到 3 報數(shù)),凡報到3 的人退出圈子,問最后留下的是原來第幾號的那位。*/#includ

溫馨提示

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

評論

0/150

提交評論