c++基礎(chǔ)例題100道_第1頁(yè)
c++基礎(chǔ)例題100道_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余54頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、/* 1 、打印出所有的 水仙花數(shù) 。所謂水仙花數(shù) 是指一個(gè)三位數(shù),其各位數(shù)字立方和等于 該數(shù)本身。例如, 153 是一水仙花數(shù),因?yàn)?153 = 13 + 53 + 33 。 */ #include void 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、一個(gè)數(shù)如果恰好等于它的因子之和, 這個(gè)數(shù)就稱為 完數(shù) 。例如,6 的因子為 1、2、3, 而 6 =1 + 2 + 3 ,因此 6 是完數(shù) 。編程序找

2、出 1000 之內(nèi)的所有完數(shù),并按下面的格式輸 出其因子:6 - 1,2,3 */ #include void 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 是一個(gè)數(shù)字。例如: 2+22+222+22222 (此時(shí) n=5), n 由鍵盤輸入。 */#inclu

3、devoid main()double 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次落地時(shí),共經(jīng)過(guò)了多少米?第 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=sum h

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

5、oid main()int i,j,temp,a10;coutplease input ten numbers:n;for(i=0;iai;for(i=0;i10;i+) /每循環(huán)一次確定數(shù)組中一個(gè)數(shù)的位置for(j=i+1;jaj)temp=aj; aj=ai; ai=temp; coutresort result=; for(i=0;i10;i+)coutai 1) */ #include double fun (double,double);void main()double n,x,sum;coutinput n and xnx; sum=fun(n,x);coutPn(x)=sum1

6、)return (2*n1-1)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1)/n1;/* 3 、編寫一函數(shù),由實(shí)參傳來(lái)一字符串,統(tǒng)計(jì)此字符串中字母、數(shù)字、空格、和其它字符 的個(gè)數(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!=

7、0)if (ai=a&ai=A&ai=0 & ai=9) number+;/統(tǒng)計(jì)數(shù)字個(gè)數(shù)else others+;/ 統(tǒng)計(jì)其他數(shù)個(gè)數(shù)i+;coutletter=letter number=number others=othersendl;/* 4 、給出年、月、日,計(jì)算該日是該年的第幾天。 */#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);

8、if (ly=1) a1=29;/366 天else a1=28;/365 天 for(i=0;imonth-1;i+) / 當(dāng)前月之前所有月天數(shù)累加和 sum+=ai;sum+=date; / 加上當(dāng)前月天數(shù)cout 你輸入的日期是當(dāng)年的第 sum 天;int lead(int y)/判斷閏年if(y%4=0&y%100!=0)|(y%400=0) return 1;/是閏年else return 0;/ 不是閏年/* 5、寫兩個(gè)函數(shù), 分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù),并輸出結(jié)果,兩個(gè)整數(shù)由鍵盤輸入。 */#includeint cdivisor(in

9、t,int);int cmultiple(int,int,int);void main()int x,y,d,m;coutxy;d=cdivisor(x,y); m=cmultiple(x,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)/ 當(dāng)較大數(shù)除以較小數(shù)余數(shù)等于 0 時(shí),較小數(shù)為最大公約數(shù)r=x1%y1;x1=y1;y1=r;return y1;int

10、 cmultiple(int x2,int y2,int d1)/最小公倍數(shù)return x2*y2/d1;/ 兩數(shù)相乘結(jié)果除以它們的最大公約數(shù)為最小公倍數(shù)/* 6 、寫一函數(shù),將兩個(gè)字符串連接。 */#include #include void 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ù),將一個(gè)字符串的元音字母復(fù)制到另一個(gè)字符串,然后輸出。 */#i

11、nclude #include void scpy(char *,char *);void main()const int size=100;char asize=Hello world;char bsize=Net;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ù), 輸入一個(gè)四位數(shù)字, 要求輸出這 4 個(gè)數(shù)字字符, 但每?jī)蓚€(gè)數(shù)字間空一空格。 如

12、輸入 1990,應(yīng)輸出 1 9 9 0 。 */#include#includevoid outs(char a);void main()const int size=10; char asize; cin.getline(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、將一個(gè)數(shù)組中的值按逆序重新存放,例如,原來(lái)順序?yàn)椋篴、b、c、d。要求改為:c 、 b、 a。 */#includevoid back(c

13、har *);void main()char a50=abcdefg;couta=aendl;back(a);#includevoid back(char *p)int i=0;while(*p!=0)p+;/ 把指針定位到字符串末尾i+;/ 統(tǒng)計(jì)字符個(gè)數(shù)cout0;i-)/逆序輸出d、void tri(int a1515)int i,j; for(i=0;i15;i+)for(j=0;j=i;j+)if(j=0|j=i)/ 三角形第一列和對(duì)角線被賦值為 1 aij=1;else aij=ai-1j-1+ai-1j;/ 算出其余的數(shù)組元素/* 3 、編一程序,將兩個(gè)字符串連接起來(lái),不要用 st

14、rcat 函數(shù)。 */#include#includevoid scat(char *,char *);void main()p-;cout*p;coutendl;/* 2、打印出楊輝三角形(要求打印出前15 行)。(楊輝三角最本質(zhì)的特征是,它的兩條斜邊都是由數(shù)字 1 組成的,而其余的數(shù)則是等于它肩上的兩個(gè)數(shù)之和。 ) */ #includevoid tri(int a15);void main()int i,j,a1515;tri (a);couta= ;for(i=0;i15;i+)/遍歷整個(gè)數(shù)組整齊整齊for(j=0;j=i;j+)cout=1&aij=9)/ 當(dāng)輸出個(gè)位數(shù)之后輸

15、出 4 個(gè)空格保持整齊 cout=10&aij=99)/ 當(dāng)輸出十位數(shù)之后輸出 3 個(gè)空格保持cout=100&aij=999)/當(dāng)輸出百位數(shù)之后輸出 2 個(gè)空格保持cout ; elsecout ;/coutendl ;/當(dāng)輸出百位數(shù)之后輸出每行輸出結(jié)束后換行1 個(gè)空格保持整齊const int size=100;char asize=Hello;char bsize=Bye; couta=a b=bendl;scat(a,b); couta=a after link a and bendl;void scat(char *p,char *q)while(*p!=0)/ 確定

16、數(shù)組 a 的插入位置p+;while(*q!=0)*p=*q;p+;q+;/* 4 、打印 魔方陣 。所謂魔方陣是指這樣的方陣,它的每一行、每一列和對(duì)角線之和均相 等。例如:三階魔方陣:8 1 63 5 74 9 2 要求打印由 1 到 n2 的自然數(shù)構(gòu)成的所有魔方陣。 */ 方法一:輸出 N 介魔方陣,但每介只輸出一種。#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;/ 確定第一個(gè)數(shù)列數(shù) square(a,k,n);for(i=0;i

17、n;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)/ 當(dāng)數(shù)組行列都越出范圍時(shí)候,確定數(shù)組正確位置j+=2;k-=1;else if(j=n)/ 當(dāng)數(shù)組列越出范圍時(shí)候,確定數(shù)組正確位置 k-=n;else if(ajk!=0)/ 當(dāng)數(shù)組原位置有數(shù)時(shí)候,確定數(shù)組位置j+=2;k-=1;ajk=i;/ 方法二:輸出 N 介魔方陣所有魔方陣。#include #include #include u

18、sing namespace std;void printA(int *p,int n)/ 輸出這個(gè) n 階魔方陣coutendl 下面是一個(gè) n 階魔方陣 :endl;int i,j;for(i = 0;i n;i+)for(j = 0;j n;j+)coutsetw(4)pij;coutendl;coutendlendl;bool 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+)/

19、判斷每行總和是否相等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(NowSum != sum)YesOrNo = false;goto END;NowSum = 0;for(i = 0,j = 0;i n,j = 0,j n;i-,j+)/次對(duì)角線是否相等NowSum += pij;if(NowSum != sum)YesOrNo = f

20、alse;goto END;END:return YesOrNo;void combination(int *p,int n,int *a)/求 m = n*n 個(gè)數(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_valc = -1;/一維數(shù)組首地址的值賦 -1 c0-1while(b_val0 m) /-1if(+b_valc m) /分別從 0 開始累加每個(gè)元素值,并限制不超出最大階數(shù)/b00 10 11 20 21 780.88判斷魔方 89

21、012345678/ 7880.87判斷魔方 88 89 012345687/67.70.7688 012345768/ 012345786/ 012345867 ./ 876543210for(k = 0;k c;k+) /是否與前面數(shù)字重復(fù),如有重復(fù)元素跳出,否則使 K下標(biāo)等于 C 下標(biāo)if(b_valk = b_valc)break;if(k = c)/如果沒(méi)有重復(fù)元素,就可以確定當(dāng)前元素值,并繼續(xù)排列下一個(gè)下標(biāo)的數(shù)組元素if(c+1 m) /1 2 3.7 8如果不滿足條件,則生成了一組排列方式,否則繼續(xù)排列下一個(gè)元素/ 8+c; /1 2 3.7 8 b_valc = -1;/ co

22、ntinue;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 階方陣的元素賦值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

23、()int i,n,*a;string s;do/ 輸入 n 階方陣的階數(shù) ncouts;if(!strcmp(s.c_str(),e) | !strcmp(s.c_str(),E)break;else if(s.find_first_not_of(0123456789) != string:npos)cout 請(qǐng)輸入有效的數(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

24、正在運(yùn)算,請(qǐng)等待。 。 endl;/ 給 n 階方陣的元素賦值evaluate(a,n);cout 運(yùn)算結(jié)束! endl;for(i = 0; i n; i+)delete ai;delete a;while(1);return;/* 5 、求一個(gè) 3x3 矩陣對(duì)角線元素之和。 */#includeint dia(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 di

25、a(int a33)int i,j,sum=0;for(i=0;i3;i+)/ 主對(duì)角線之和for(j=i;j=i;j+)sum+=aij;for(j=0;j3;j+)/ 另一個(gè)對(duì)角線之和for(i=2-j;i=2-j;i+)if(i!=j)/ 避免重復(fù)累加兩個(gè)對(duì)焦向重合的元素 sum+=aij;return sum;/ 返回對(duì)角線員素之和/* 6、編寫一個(gè)程序, 將字符數(shù)組 s2 中的全部字符拷貝到字符數(shù)組 s1 中。不用 strcpy 函數(shù)。 拷貝時(shí),0 也要拷貝過(guò)去。 0 后面的字符不拷貝。 */#includevoid scopy(char a,char b);void main()i

26、nt 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)的素?cái)?shù)。(所謂素?cái)?shù)就是除了 1 和它本身以外,不能再被別的整數(shù) 整除,這種數(shù)稱作素?cái)?shù) ( 也稱質(zhì)數(shù) ) 。)*/#include void main()int i,j;for(i=1;i=100;i+)for(j=2;ji;j+)/ 判斷素?cái)?shù) if(i%j!=0);else break;/ 不是素

27、數(shù) if(i=j)/ 相等為素?cái)?shù) cout i;coutendl;/* 8 、用選擇法對(duì) 10 個(gè)整數(shù)排序。 */#include void 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(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

28、)temp=ai;/ 把數(shù)放到正確位置輸出排序后的順序排序ai=ak; ak=temp;第 6 章 指針/* 1 、在主函數(shù)中輸入 10 個(gè)字符串。用另一函數(shù)對(duì)它們排序。然后在主函數(shù)輸出這 10 個(gè)已 排好序的字符串。 (用指針實(shí)現(xiàn)) */#includevoid psort(int *p);void main()int i,a10;coutplease input ten numbers: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=

29、0;i10;i+) / 每循環(huán)一次確定數(shù)組中一個(gè)數(shù)的位置for(j=i+1;jpj)temp=pj;pj=pi;pi=temp;/* 2 、輸入一個(gè)字符串,內(nèi)有數(shù)字和非數(shù)字字符,如A123x456 1233?8997jhlkll將其中連續(xù)的數(shù)字作為一個(gè)整數(shù),依次存放到一數(shù)組a 中,統(tǒng)計(jì)共有多少個(gè)整數(shù),并輸出這些數(shù)。 */#include#include#include int charge(int *,char *);void main()int a50,i,numb; char b50; coutplease input a character string:endl;cin.getline

30、(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ù)字符型整數(shù)轉(zhuǎn)換成一個(gè)整型整數(shù)賦值給 新數(shù)組p+;q+; numb+;/ 統(tǒng)計(jì)整數(shù)的個(gè)數(shù)return numb;/* 3 、用指向指針的指針的方法對(duì) 5 個(gè)字符串排序并輸出。 */#i

31、nclude #include void sort(char *str);void main()int i;char *string5;cout 輸入 5 個(gè)字符串: 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)int 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=*

32、(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)計(jì)一字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。 */ #include#includeint change(char *,char *);void main()int sum;char a10=dog;char b20=sdlkdogsddydodog; cout.write(a,10)endl; cout.write(b,20)endl;sum=change(a,b);coutsum=

33、sumendl;int change(char *p,char *q)int sum=0,i=0;while(*q!=0)while(*p=*q&*p!=0)/ 對(duì)比是否含有相等字符串*p+;*q+;i+;if(*p=0)sum+=1;/ 含有字符串個(gè)數(shù)p=p-i;/ 第一個(gè)字符串重新定位q=q-i;/ 第二個(gè)字符串重新定位i=0;/ 重新累加移動(dòng)次數(shù) q+;return sum;/* 5、有 n 個(gè)整數(shù),使其前面各數(shù)順序向后移m 個(gè)位置,最后 m 個(gè)數(shù)變成最前面的m 從鍵盤輸入。 */#include#includevoid charge(int a,int,int);void ma

34、in()int i,n,m,a50;coutn;coutm;cout 請(qǐng)輸入整數(shù): ;for(i=0;iai;cout 您輸入的整數(shù)為: ;for(i=0;in;i+)coutai m 個(gè)數(shù) .n 和coutendl;charge(a,n,m);cout 移動(dòng)后的整數(shù)為: ;for(i=0;in;i+)coutai ;coutendl;void charge( int a,i nt n, i nt m) n為整數(shù)個(gè)數(shù),向右移動(dòng)m 個(gè)位置int i,j; for(j=0;j=0;i-)/移動(dòng)一個(gè)位置就要移動(dòng)每一個(gè)數(shù)組元素ai+1=ai;a0=an;/* 6、有 n 個(gè)人圍成一圈,順序排號(hào)。從第

35、1 個(gè)人開始報(bào)數(shù)(從 1 到 3 報(bào)數(shù)),凡報(bào)到 3 的人 退出圈子,問(wèn)最后留下的是原來(lái)第幾號(hào)的那位。 */#includevoid change(int a,int n);void main()int i,a50,n;coutn;for(i=0;i1)/ 直到只剩下 1 人時(shí)if(ai!=0)k+; / 報(bào)數(shù) if(k=3)ai=0; / 退出圈子的人 qnumber+; / 退出的總?cè)藬?shù)k=0; / 重新開始報(bào)數(shù)i+;if(i=n)i=0; / 當(dāng)所有人都報(bào)過(guò)數(shù)之后重新每人再次報(bào)數(shù)for(i=0;in;i+)if(ai!=0)coutai ;/* 7 、寫一函數(shù),實(shí)現(xiàn)兩個(gè)字符串的比較。即自

36、己寫一個(gè) strcmp 函數(shù)。 */#include#includeint change(char *,char *);void main()int result;char a10=dog;char b20=sdlkdogsddydodog;cout.write(a,10)endl;cout.write(b,20)endl;result=change(a,b);coutresult=result*q)flag=1;/ 第一個(gè)字符串大于第二個(gè)字符串返回 1 break;if(*p*q)flag=-1;/ 第二一個(gè)字符串大于第一個(gè)字符串返回 -1 break;if(*p=*q)&*(p+1

37、)=0&*(q+1)!=0)flag=-1;/ 第二一個(gè)字符串大于第一個(gè)字符串返回 -1 break;*p+;*q+;return flag;/* 8 、將一個(gè) 5 x 5 的矩陣中最大的元素放在中心,四個(gè)角分別放四個(gè)最小的元素(順序?yàn)?從左到右,從上到下順序依次從小到大存放) ,寫一函數(shù)實(shí)現(xiàn)之。用 main 函數(shù)調(diào)用。 */ #includevoid psort(int a);void main()int i;inta25=5,3,52,6,2,1,8,0,23,56,7,21,23,4,57,62,15,31,45,6,43,78,12,53,41; for(i=0;i25;i+)

38、cout ai;coutendl;psort(a);void psort(int a)int i,j,k=0,temp,b55;for(i=0;i25;i+) / 每循環(huán)一次確定數(shù)組中一個(gè)數(shù)的位置 for(j=i+1;jaj)temp=aj;aj=ai; ai=temp;for(i=0;i5;i+)for(j=0;j5;j+)bij=ak+;temp=b44; /確定 5 個(gè)位置的數(shù)值b44=b22;b22=temp;temp=b01; b01=b04;b04=temp;temp=b02;b02=b40;b40=temp;temp=b03;b03=b44;b44=temp;for(i=0;i5

39、;i+)for(j=0;j5;j+)couttbij;coutendl;第 7 章 結(jié)構(gòu)體與共用體/* 1 、用指針和結(jié)構(gòu)體實(shí)現(xiàn)一雙向鏈表,并實(shí)現(xiàn)其相應(yīng)的增、刪、遍歷功能,并在實(shí)例中應(yīng) 用它。 */#include typedef struct nodeint number;struct node *next;struct node *parent;Node,*LinkNode;class LinkClasspublic:LinkNode first,current;/頭指針,當(dāng)前指針void init();/ 初始化函數(shù)LinkNode Insert(int data,LinkNode cu

40、r);/插入函數(shù)void Remove(LinkNode p);/ 刪除函數(shù)void Prior(LinkNode head);/ 遍歷函數(shù);void LinkClass:init()struct node *head=new struct node;struct node *tail=new struct node;head-parent=NULL; head-next=tail;tail-parent=head;tail-next=NULL;first=current=head;LinkNode LinkClass:Insert(int data,LinkNode cur)struct n

41、ode *newNode=new struct node; newNode-number = data; newNode-next = cur-next;cur-next = newNode; newNode-parent = cur; newNode-next-parent = newNode;cur=newNode;return cur;void LinkClass:Prior(LinkNode head)LinkNode cur=head-next; while(cur-next!=NULL)coutnumbernext;coutparent-next=temp-next; temp-n

42、ext-parent=temp-parent;delete(temp);void main()LinkClass lc; lc.init();LinkNode cur=lc.current;for(int i=0;i=10;i+)/ 用循環(huán)來(lái)初始化結(jié)構(gòu)體內(nèi)的cur=lc.Insert(i,cur);/ 調(diào)用插入函數(shù)LinkNode head=lc.first; cout 沒(méi)調(diào)用刪除函數(shù)的遍歷 :endl; lc.Prior(head);/ 遍歷函數(shù) for(intj=0;jparent;numberlc.Remove(cur);/ 執(zhí)行刪除函數(shù) cout 調(diào)用刪除函數(shù)后的遍歷 :endl; l

43、c.Prior(head);/* 2 、用指針和結(jié)構(gòu)體實(shí)現(xiàn)棧及其方法,并在實(shí)例中應(yīng)用它。 */ #include #include #define STACK_INIT_SIZE 100#define STACKIN 10struct stackint *top;int *base;int stacksize;int initstack(stack &s)s.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int); if(!s.base) return 0; s.top=s.base;s.stacksize =STACK_INIT_SIZE;

44、return 1;int gettop(stack s,int &e)if(s.top =s.base) return 0;e=*(s.top-1);return 1;int push(stack &s,int e)if(s.top -s.base=s.stacksize)s.base=(int *)realloc(s.base,(s.stacksize + STACKIN)*sizeof(int);if(!s.base) return 0;s.top =s.base+s.stacksize;s.stacksize +=STACKIN;*s.top+=e;return 1;in

45、t pop(stack &s,int &e)if (s.top =s.base)return 0;e=*-s.top;return 1;void main()stack s;int result,e=0;result=s.initstack(s);if(result=1)cout 建棧成功 !endl;elsecout 建棧失敗 !endl;for(int i=0;i5;i+)result=s.push(s,i);if(result=1)cout 初始化棧成功 !endl;elsecout 初始化棧失敗 !endl;s.gettop(s,e);cout 棧頂元素為: eendl

46、;result=s.pop(s,e);if(result=1)cout 刪除棧頂元素成功 !endl;elsecout 刪除棧頂元素失敗 !endl;s.pop(s,e);cout 刪除的棧頂元素為: eendl;/* 3 、編寫一函數(shù) print ,打印一個(gè)學(xué)生的成績(jī)數(shù)組,該數(shù)組中有 5 個(gè)學(xué)生的數(shù)據(jù)記錄,每 個(gè)記錄包括 num、 name、score3 ,用主函數(shù)輸入這些記錄,用 print 函數(shù)輸出這些記錄。4 、在上題的基礎(chǔ)上,編寫一個(gè)函數(shù) input ,用來(lái)輸入 5 個(gè)學(xué)生的數(shù)據(jù)記錄。 */ #include #include struct studentpublic:int num

47、;char name20;int score3;class contralpublic:void print(struct student *p,int count);int input(struct student *p,int count);void contral:print(struct student *p,int count)for(int i=0;i=count;i+)coutNum:numendl; coutName:nameendl;coutJAVA:score0endl; coutC+:score1endl;coutEnglish:score2endl; p+;int co

48、ntral:input(struct student *p,int count)while(true)cout 請(qǐng)輸入學(xué)號(hào): p-num;cout 請(qǐng)輸入姓名: p-name;cout 請(qǐng)輸入 JAVA 分?jǐn)?shù): p-score0;cout請(qǐng)輸入 C+分?jǐn)?shù):p-score1;cout 請(qǐng)輸入 English 分?jǐn)?shù): p-score2;p+;count+;cout輸入 Q 退出,輸入其它繼續(xù)str;if(strcmp(str, q)=0)break;return count;void main()int count=0;contral con;student NewS100;student *p=

49、NewS; count=con.input(p,count);coutcountendl;con.print(p,count-1);/* 5 、將一個(gè)鏈表按逆序排列,即將鏈頭當(dāng)鏈尾,鏈尾當(dāng)鏈頭。 */#includestruct numint data;struct num *next;void fan(struct num node1)for(int i=9;i=0;i-)node1i.next=&node1i-1;void main()struct num node10;for(int i=0;i10;i+)nodei.data=i;for(int j=0;j10;j+)coutn

50、odej.data;fan(node);coutendl;cout0;k-)coutdata;第 8 章 類和對(duì)象/*1 、自定義一個(gè)字符串處理類 CString ,且能實(shí)現(xiàn)取子串、刪除子串的功能。*/ #include#define MAX_LENGTH 100class CStringpublic:void cpystring(char *str);void getSubstring(int beginStr,int endStr);void delSubstring(int beginStr,int endStr);void print();private:char cstrMAX_LE

51、NGTH;int length;#includeCString.h#includestring.hvoid CString:cpystring(char *str)int i=0;while(*str!=0)cstri+=*str; str+;cstri=0;void CString:getSubstring(int beginStr,int endStr)int i,j=0;char pstrMAX_LENGTH;if(beginStrMAX_LENGTH|beginStrendStr)couterror!endl;for(i=beginStr;iendStr;i+,j+)pstrj=cst

52、ri;pstrj=0; cpystring(pstr);void CString:delSubstring(int beginStr,int endStr)int i,j=0;char pstrMAX_LENGTH; if(beginStrMAX_LENGTH|beginStrendStr)couterror!endl;for(i=0;ibeginStr;i+,j+)pstrj=cstri;for(i=endStr+1;istrlen(cstr);i+,j+)pstrj=cstri;pstrj=0; cpystring(pstr);void CString:print()coutcstrend

53、l;#include#includeCString.hmain ()CString str1,str2,str3;str1.cpystring(Just like before, its yesterday once more!);/初始化 str1str2=str1;str3=str1; str2.getSubstring(5,9);/ 截取字符串 str3.delSubstring(10,16);/ 刪除字符串str1.print();str2.print();str3.print();/*2 、定義一個(gè)循環(huán)隊(duì)列類,且實(shí)現(xiàn)其相關(guān)的成員操作函數(shù),并實(shí)例化調(diào)用之。 */ CircularQue

54、ue.h 文件:*#define MAX_SIZE 101class CircularQueueprivate:int queueMAX_SIZE;int front;int rear;public:CircularQueue();virtual CircularQueue();bool isEmpty();bool isFull();bool push(int);int pop();*CircularQueue.cpp 文件:*#include CircularQueue.hCircularQueue:CircularQueue()front = 0;rear = 0;CircularQue

55、ue:CircularQueue()bool CircularQueue:isFull()if (rear+1)%MAX_SIZE = front)return true;elsereturn false;bool CircularQueue:isEmpty()if (rear = front)return true;elsereturn false;bool CircularQueue:push(int e)if (isFull()return false;queuerear = e;rear = +rear % MAX_SIZE;return true;CircularQueue:pop(

56、)if (isEmpty()return 0;int e = queuefront;front = +front % MAX_SIZE; return e;*main.cpp 文件*#include CircularQueue.h#include using namespace std;void main()CircularQueue cQueue;for (int i=0 ; i75; i+)cQueue.push(i);for (i=0; i50; i+)cout cQueue.pop() ;cout endl;for (i=0; i60; i+)cQueue.push(i);for (i

57、=0; i85; i+)cout cQueue.pop() ;cout endl;*第 9 章 運(yùn)算符重載/*1 、定義一個(gè)二維向量類 Vector ,并在該類中用成員函數(shù)方式重載一元運(yùn)算符 綴)和二元運(yùn)算符 +。 */class Vectorpublic:Vector();+(前、后Vector(int x,int y);operator +();Vector operator +(int);Vector operator +(const Vector &a);void display();private:int x,y;#include#includeVector.hVector:

58、Vector()Vector:Vector(int x,int y)this-x=x;this-y=y;Vector:operator +() +x;+y;Vector Vector:operator +(int)Vector s;s.x=x+;s.y=y+;return s;Vector Vector:operator +(const Vector &v)Vector sum;sum.x=x+v.x;sum.y=y+v.y;return sum;void Vector:display()cout(x,y)endl;#include#includeVector.hvoid main()

59、Vector v1(3,4),v2(1,2),v3;coutv1=;v1.display();coutv2=;v2.display();+v1; cout+v1=;v1.display(); coutv2+=;(v2+).display();coutv2=;v2.display();v3=v1+v2; coutv1+v2=;v3.display();/*2 、將第一題中的相關(guān)重載項(xiàng)改為用友元函數(shù)的方式重載。 */ class Vectorpublic:Vector();Vector(int x,int y);friend void operator +(Vector &v);frien

60、d void operator +(Vector &v,int);friend Vector operator +(const Vector &v1,const Vector &v2); void display();private:int x,y;#include#includeVector.hVector:Vector()Vector:Vector(int x,int y)this-x=x;this-y=y;void operator +(Vector &v) +v.x;+v.y;Vector operator +(Vector &v,int)Vector before(v.x,v.y);v.x+;v.y+;return before;Vector operator +(const Vector &v1,const Vector &v2)Vector sum; sum.x=v1.x+v2.

溫馨提示

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

評(píng)論

0/150

提交評(píng)論