c++基礎例題100道_第1頁
c++基礎例題100道_第2頁
c++基礎例題100道_第3頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、/*1、打印出所有的"水仙花數"。所謂"水仙花數"是指一個三位數,其各位數字立方和等于該數本身。例如,153是一水仙花數,因為153=13+53+33。*/#include<iostream.h>voidmain()inti,a=0,b=0,c=0;for(i=100;i<1000;i+)a=i%10;b=i/10%10;c=i/100%10;if(a*a*a+b*b*b+c*c*c=i)cout<<"i="<<i<<endl;/*2、一個數如果恰好等于它的因子之和,這個數就稱為&

2、quot;完數"。例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數"。編程序找出1000之內的所有完數,并按下面的格式輸出其因子:6->1,2,3*/#include<iostream.h>voidmain()inti,j,sum=0,a50,k,t;for(i=1;i<=1000;i+)sum=0;for(j=1;j<i;j+)if(i%j=0)sum+=j;ak+=j;t=k;if(sum=i)cout<<i<<"->"for(k=0;k<t;k+)cout<

3、;<ak;if(k<t-1)cout<<”,”;cout<<endl;k=0;/*3、求Sn=a+aa+aaa+aaa之值,其中a是一個數字。例如:2+22+222+22222(此時n=5),n由鍵盤輸入。*/#include<iostream.h>voidmain()doublea,sn=0.0,sum=0.0;intn,i;cout<<"pleaseinputanumber"cin>>a;cout<<"pleaseinputnnumber"cin>>n;s

4、n=a;sum=a;for(i=2;i<=n;i+)sum=sum*10+a;sn+=sum;cout<<"Sn="<<sn<<endl;/*4、一球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地時,共經過了多少米?第10次反彈多高?*/#include<iostream.h>voidmain()doubleh1=100,h2=100,sum=0.0;inti;for(i=1;i<=10;i+)sum+=h2;h1=h1/2.0;h2=h1*2;cout<<"

5、sum="<<sum<<""<<"h1="<<h1<<endl;/*5、猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉了一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩一個桃子了。求第一天共摘了多少桃子。*/#include<iostream.h>voidmain()(intnumber,i;number=1;for(i=10;i>1;i-)number=(numb

6、er+1)*2;cout<<"number="<<number<<endl;第4章函數/*1、寫一函數用”氣泡法"對輸入的10個字符按由小到大的順序排列。*/#include<iostream.h>voidmain()(inti,j,temp,a10;cout<<"pleaseinputtennumbers:n”;for(i=0;i<10;i+)cin>>ai;for(i=0;i<10;i+)/每循環一次確定數組中一個數的位置for(j=i+1;j<10;j+)/每

7、次循環對比一個數的大小(if(ai>aj)(temp=aj;aj=ai;ai=temp;cout<<"resortresult="for(i=0;i<10;i+)cout<<ai<<”"/*2、用遞歸方法求n階勒讓得多項式的值,遞歸公式為1(n=0)Pn(x)=x(n=1)(2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x)/n(n>1)*/#include<iostream.h>doublefun(double,double);voidmain()(doublen,x,sum;cout&l

8、t;<"inputnandx"<<endl;cin>>n>>x;sum=fun(n,x);cout<<"P"<<n<<"("<<x<<")"<<"="<<sum<<endl;doublefun(doublen1,doublex1)(if(n1=0)return1;elseif(n1=1)returnx1;elseif(n1>1)return(2*n1-1

9、)*x1*fun(n1-1,x1)-(n1-1)*fun(n1-2,x1)/n1;/*3、編寫一函數,由實參傳來一字符串,統計此字符串中字母、數字、空格、和其它字符的個數,并在主函數中輸入字符串以及輸出上述結果。*/#include<iostream.h>voidjudge(chara);voidmain()(constintsize=100;charasize;cin.getline(a,size);judge(a);voidjudge(chara100)/判斷字符類型(intletter=0,number=0,others=0,i=0;while(ai!='0'

10、)(if(ai>='a'&&ai<='z')|(ai>='A'&&ai<='z')letter+;/統計字母個數elseif(ai>='0'&&ai<='9')number+;/統計數字個數elseothers+;/統計其他數個數i+;cout<<"letter="<<letter<<"number="<<number<&l

11、t;"others="<<others<<endl;/*4、給出年、月、日,計算該日是該年的第幾天。*/#include<iostream.h>intlead(int);voidmain()(intly,year,month,date,i,sum=0;cout<<"inputyear、month、date:"cin>>year>>month>>date;inta12=31,0,31,30,31,30,31,31,30,31,30,31;ly=lead(year);if(l

12、y=1)a1=29;/366夭elsea1=28;/365夭for(i=0;i<month-1;i+)/當前月之前所有月天數累加和sum+=ai;sum+=date;/加上當前月天數cout<<"你輸入的日期是當年的第"<<sum<<"天"intlead(inty)/判斷閏年(if(y%4=0&&y%100!=0)|(y%400=0)return1;/是閏年elsereturn0;/不是閏年/*5、寫兩個函數,分別求兩個整數的最大公約數和最小公倍數,用主函數調用這兩個函數,并輸出結果,兩個整數由鍵

13、盤輸入。*/#include<iostream.h>intcdivisor(int,int);intcmultiple(int,int,int);voidmain()(intx,y,d,m;cout<<"inputtwonumber:"cin>>x>>y;d=cdivisor(x,y);m=cmultiple(x,y,d);cout<<"commondivisoris"<<d<<endl<<"commonmultipleis"<<

14、;m<<endl;intcdivisor(intx1,inty1)/最大公約數(intr,temp;if(x1<y1)(temp=x1;x1=y1;y1=temp;while(x1%y1)/當較大數除以較小數余數等于0時,較小數為最大公約數(r=x1%y1;x1=y1;y1=r;returny1;)最小公倍數intcmultiple(intx2,inty2,intd1)/returnx2*y2/d1;/兩數相乘結果除以它們的最大公約數為最小公倍數)/*6、寫一函數,將兩個字符串連接。*/#include<iostream.h>#include<string.

15、h>voidmain()constintsize=100;charasize,bsize;cout«"inputtwostring:"«endl;cin.getline(a,size);cin.getline(b,size);strcat(a,b);cout«"a="«a«endl;)/*7、寫一函數,將一個字符串的元音字母復制到另一個字符串,然后輸出。*/#include<iostream.h>#include<string.h>voidscpy(char*,char*);

16、voidmain()constintsize=100;charasize="Helloworld"charbsize="Net"cout«"a="«a«"b="«b«endl;scpy(a,b);cout«"a="«a«endl;)voidscpy(char*p,char*q)while(*q!='0')if(*q='a'|*q='A'|*q='e'|*

17、q='E'|*q='i'|*q=T|*q='o'|*q='O'|*q='u'|*q='U')*p+=*q;q+;)/*8、寫一函數,輸入一個四位數字,要求輸出這4個數字字符,但每兩個數字間空一空格。如輸入1990,應輸出"1990"o*/#include<iostream.h>#include<string.h>voidouts(chara);voidmain()constintsize=10;charasize;cin.getline(a,size);o

18、uts(a);voidouts(chara10)inti;if(strlen(a)<=4)for(i=0;i<4;i+)cout<<ai<<”"elsecout<<"inputerror."<<endl;第5章數組/*1、將一個數組中的值按逆序重新存放,例如,原來順序為:a、b、c、doc、b、a。*/#include<iostream.h>voidback(char*);voidmain()chara50="abcdefg”;cout<<"a="&l

19、t;<a<<endl;back(a);#include<iostream.h>voidback(char*p)inti=0;while(*p!='0')p+;/把指針定位到字符串末尾i+;/統計字符個數cout<<"a="for(;i>0;i-)/逆序輸出p-;cout<<*p;cout<<endl;/*2、打印出楊輝三角形(要求打印出前15行)。(楊輝三角最本質的特征是,它的兩條斜邊都是由數字1組成的,而其余的數則是等于它肩上的兩個數之和。)*/#include<iostream

20、.h>voidtri(inta15);voidmain()inti,j,a1515;tri(a);cout<<"a="for(i=0;i<15;i+)/遍歷整個數組for(j=0;j<=i;j+)cout<<aij;if(aij>=1&&aij<=9)/當輸出個位數之后輸出4個空格保持整齊cout<<""elseif(aij>=10&&aij<=99)/當輸出十位數之后輸出3個空格保持整齊cout<<""elsei

21、f(aij>=100&&aij<=999)/當輸出百位數之后輸出2個空格保持整齊cout<<""elsecout<<""/當輸出百位數之后輸出1個空格保持整齊cout<<endl<<""/每行輸出結束后換行voidtri(inta1515)inti,j;for(i=0;i<15;i+)for(j=0;j<=i;j+)if(j=0|j=i)/三角形第一列和對角線被賦值為1aij=1;elseaij=ai-1j-1+ai-1j;/算出其余的數組元素/*

22、3、編一程序,將兩個字符串連接起來,不要用strcat函數。*/#include<iostream.h>#include<string.h>voidscat(char*,char*);voidmain()constintsize=100;charasize="Hello”;charbsize="Bye”;cout<<"a="<<a<<"b="<<b<<endl;scat(a,b);cout<<"a="<<a&

23、lt;<"afterlinkaandb"<<endl;voidscat(char*p,char*q)while(*p!='0')/確定數組a的插入位置p+;while(*q!='0')*p=*q;p+;q+;/*4、打印”魔方陣”。所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。例如:三階魔方陣:8163 5792要求打印由1到n2的自然數構成的所有魔方陣。*/方法一:輸出N介魔方陣,但每介只輸出一種。#include<iostream.h>voidsquare(inta10,intk,intn)

24、;voidmain()intn,i,j,k,a1010=0;cout<<"inputanoddnumber:"<<endl;cin>>n;k=n/2;/確定第一個數列數square(a,k,n);for(i=0;i<n;i+)for(j=0;j<n;j+)cout<<"t"<<aij;cout<<endl;voidsquare(inta10,intk,intn)(inti,j;for(i=1,j=0;i<=n*n;i+,j-,k+)/n為階數,從1開始給數組賦值(i

25、f(j<0&&k>=n)/當數組行列都越出范圍時候,確定數組正確位置(j+=2;k-=1;elseif(j<0)/當數組行越出范圍時候,確定數組正確位置j+=n;elseif(k>=n)/當數組列越出范圍時候,確定數組正確位置k-=n;elseif(ajk!=0)/當數組原位置有數時候,確定數組位置(j+=2;k-=1;ajk=i;/方法二:輸出N介魔方陣所有魔方陣。#include<string>#include<iomanip>#include<iostream>usingnamespacestd;voidprin

26、tA(int*p,intn)/輸出這個n階魔方陣(cout<<endl<<"下面是一個"<<n<<"階魔方陣:"<<endl;inti,j;for(i=0;i<n;i+)(for(j=0;j<n;j+)(cout<<setw(4)<<pij;cout<<endl;cout<<endl<<endl;boolJudge(int*p,intn)/判斷是否為n階魔方陣inti,j,sum=0,NowSum=0;boolYesOrNo

27、=true;for(j=0;j<n;j+)/Z第一行總和(sum+=p0j;for(i=1;i<n;i+)/判斷每行總和是否相等(NowSum=0;for(j=0;j<n;j+)(NowSum+=pij;if(NowSum!=sum)(YesOrNo=false;gotoEND;for(i=0;i<n;i+)/Z每列是否相等(NowSum=0;for(j=0;j<n;j+)(NowSum+=pji;if(NowSum!=sum)(YesOrNo=false;gotoEND;NowSum=0;for(i=0,j=0;i<n,j<n;i+,j+)/主對角線

28、是否相等(NowSum+=pij;if(NowSum!=sum)(YesOrNo=false;gotoEND;NowSum=0;次對角線是否相等for(i=n-1,j=0;i>=0,j<n;i-,j+)/if(NowSum!=sum)(YesOrNo=false;gotoEND;END:returnYesOrNo;voidcombination(int*p,intn,int*a)/求m=n*n個數(1,2,3.m)的全排列(intm=n*n;staticintNum=0;int*b_val=newintm;intc=0,k,i,j;b_valc=-1;/一維數組首地址的值賦-1c0

29、-1while(b_val0<m)/-1(if(+b_valc<m)/分別從0開始累加每個元素值,并限制不超出最大階數/b001011202780.88判斷魔方89012345678/7880.87判斷魔方8889012345687/67.70.7688012345768/012345786/012345867./876543210(for(k=0;k<c;k+)/是否與前面數字重復,如有重復元素跳出,否則使K下標等于C下標if(b_valk=b_valc)break;if(k=c)/如果沒有重復元素,就可以確定當前元素值,并繼續排列下一個下標的數組元素

30、(if(c+1<m)/123.78如果不滿足條件,則生成了一組排列方式,否則繼續排列下一個元素/8(+c;/123.78b_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);else(c-;deleteb_val;voidevaluate(int*p,intn)/給n階方陣的元素賦值(inti;int*AllNum=newint3*3;for(i=1;i<=n*n;i+)

31、(AllNumi-1=i;combination(p,n,AllNum);deleteAllNum;voidmain()(inti,n,*a;strings;do/輸入n階方陣的階數ncout<<"請輸入n階方陣的階數n(退出程序按e或E鍵):";cin>>s;if(!strcmp(s.c_str(),"e”)|!strcmp(s.c_str(),"E”)(break;elseif(s.find_first_not_of("0123456789")!=string:npos)(cout<<"

32、;請輸入有效的數字,不能含有非數字的字符。"<<endl;continue;else(n=atoi(s.c_str();if(n<1)(cout<<"請輸入有效的數字,必須>=1。"<<endl;continue;/分配內存a=newint*n;for(i=0;i<n;i+)(ai=newintn;cout<<"正在運算,請等待。"<<endl;/給n階方陣的元素賦值evaluate(a,n);cout<<"運算結束!"<<

33、endl;for(i=0;i<n;i+)(deleteai;deletea;while(1);return;/*5、求一個3x3矩陣對角線元素之和。*/#include<iostream.h>intdia(inta3);voidmain()inti,j,sum,a33=2,3,5,6,2,3,1,9,0;cout<<"a="for(i=0;i<3;i+)for(j=0;j<3;j+)cout<<aij;cout<<endl<<”"sum=dia(a);cout<<"

34、nsum="<<sum<<endl;intdia(inta33)inti,j,sum=0;for(i=0;i<3;i+)/主對角線之和for(j=i;j<=i;j+)sum+=aij;for(j=0;j<3;j+)/另一個對角線之和for(i=2-j;i<=2-j;i+)if(i!=j)/避免重復累加兩個對焦向重合的元素sum+=aij;returnsum;/返回對角線員素之和/*6、編寫一個程序,將字符數組s2中的全部字符拷貝到字符數組s1中。不用strcpy函數。拷貝時,'0'也要拷貝過去。'0'后面

35、的字符不拷貝。*/#include<iostream.h>voidscopy(chara,charb);voidmain()inti;chara10;charb10="Hello”;scopy(a,b);for(i=0;ai!='0'i+)cout<<ai;cout<<endl;voidscopy(chara,charb)inti;for(i=0;bi!='0'i+)ai=bi;ai='0'/*7、用篩選法求100之內的素數。(所謂素數就是除了1和它本身以外,不能再被別的整數整除,這種數稱作素數(也稱

36、質數)。)*/#include<iostream.h>voidmain()inti,j;for(i=1;i<=100;i+)for(j=2;j<i;j+)/判斷素數if(i%j!=0);elsebreak;/不是素數if(i=j)/相等為素數cout<<""<<i;cout<<endl;/*8、用選擇法對10個整數排序。*/#include<iostream.h>voidcsort(inta10);voidmain()inti;inta10=6,4,2,7,9,0,1,6,3,0;for(i=0;i&l

37、t;10;i+)/輸出原數組數據順序cout<<ai;cout<<endl;csort(a);for(i=0;i<10;i+)/輸出排序后的順序cout<<ai;cout<<endl;voidcsort(inta10)/排序inti,j,k,temp=0;for(i=1;i<10;i+)k=i;for(j=k+1;j<10;j+)/找出最小數的數組下標if(ak>aj)k=j;if(k!=i)temp=ai;/把數放到正確位置ai=ak;ak=temp;第6章指針/*1、在主函數中輸入10個字符串。用另一函數對它們排序。然

38、后在主函數輸出這10個已排好序的字符串。(用指針實現)*/#include<iostream.h>voidpsort(int*p);voidmain()inti,a10;cout<<"pleaseinputtennumbers:n"for(i=0;i<10;i+)cin>>ai;psort(a);cout<<"resortresult="for(i=0;i<10;i+)cout<<ai<<""voidpsort(int*p)inti,j,temp;fo

39、r(i=0;i<10;i+)/每循環一次確定數組中一個數的位置for(j=i+1;j<10;j+)/每次循環對比一個數的大小if(pi>pj)temp=pj;pj=pi;pi=temp;/*2、輸入一個字符串,內有數字和非數字字符,如A123x4561233?8997jhlkll將其中連續的數字作為一個整數,依次存放到一數組a中,統計共有多少個整數,并輸出這些數。*/#include<iostream.h>#include<string.h>#include<windows.h>intcharge(int*,char*);voidmain(

40、)inta50,i,numb;charb50;cout<<"pleaseinputacharacterstring:"<<endl;cin.getline(b,50);system("cls");cout<<"yourcharacterstringis"cout.write(b,strlen(b)<<endl;numb=charge(a,b);for(i=0;i<numb;i+)cout<<"a"<<i<<”="&l

41、t;<ai;cout<<endl<<"totalnumbers="<<numb<<endl;intcharge(int*q,char*p)/*q指向新數組,*p指向初始數組(intnumb=0;for(;*p!='0'p+)/判斷每個字符(if(*p>='0'&&*p<='9')(*q=(*p)-'0'/將字符型整數轉換成整型整數賦值給新數組p+;while(*p>='0'&&*p<=&

42、#39;9')/判斷是否有連續字符型整數(*q=(*q)*10+(*p)-'0');/將連續字符型整數轉換成一個整型整數賦值給新數組p+;q+;numb+;/統計整數的個數returnnumb;/*3、用指向指針的指針的方法對5個字符串排序并輸出。*/#include<iostream.h>#include<string.h>voidsort(char*str);voidmain()(inti;char*string5;cout<<"輸入5個字符串:"<<endl;for(i=0;i<5;i+)s

43、tringi=newchar10;cin.getline(*(string+i),50);sort(string);for(i=0;i<5;i+)deletestringi;voidsort(char*str)(inti=0,j;char*p=0;for(i=0;i<4;i+)(for(j=i+1;j<5;j+)(if(strcmp(*(str+i),*(str+j)<0)(p=*(str+i);*(str+i)=*(str+j);*(str+j)=p;cout<<"aftersortthechars:"<<endl;for(

44、i=0;i<5;i+)(cout<<*(str+i)<<endl;/*4、統計一字符串在另一個字符串中出現的次數。*/#include<iostream.h>#include<string.h>intchange(char*,char*);voidmain()(intsum;chara10="dog”;charb20="sdlkdogsddydodog”;cout.write(a,10)<<endl;cout.write(b,20)<<endl;sum=change(a,b);cout<&l

45、t;"sum="<<sum<<endl;intchange(char*p,char*q)(intsum=0,i=0;while(*q!='0')(while(*p=*q&&*p!='0')/對比是否含有相等字符串(*p+;*q+;i+;if(*p='0')(sum+=1;/含有字符串個數p=p-i;/第一個字符串重新定位q=q-i;/第二個字符串重新定位i=0;/重新累加移動次數q+;returnsum;/*5、有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數.n

46、和m從鍵盤輸入。*/#include<iostream.h>#include<string.h>voidcharge(inta,int,int);voidmain()(inti,n,m,a50;cout<<"請輸入n的值:"cin>>n;cout<<"請輸入移動位數:"cin>>m;cout<<"請輸入整數:"for(i=0;i<n;i+)(cin>>ai;cout<<"您輸入的整數為:"for(i=0

47、;i<n;i+)(cout<<ai<<""cout<<endl;charge(a,n,m);cout<<"移動后的整數為:"for(i=0;i<n;i+)(cout<<ai<<""cout<<endl;voidcharge(inta,intn,intm)/n為整數個數,向右移動m個位置(inti,j;for(j=0;j<m;j+)/移動m個位置(for(i=n-1;i>=0;i-)/移動一個位置就要移動每一個數組元素(ai+1=

48、ai;a0=an;/*6、有n個人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。*/#include<iostream.h>voidchange(inta,intn);voidmain()(inti,a50,n;cout<<"輸入人數:"cin>>n;for(i=0;i<n;i+)ai=i+1;change(a,n);voidchange(inta,intn)(intqnumber=0,i=0,k=0;while(n-qnumber>1)/直到只剩下1人時(if(

49、ai!=0)k+;/報數if(k=3)(ai=0;/退出圈子的人qnumber+;/退出的總人數k=0;/重新開始報數i+;if(i=n)i=0;/當所有人都報過數之后重新每人再次報數for(i=0;i<n;i+)if(ai!=0)cout<<ai<<”"/*7、寫一函數,實現兩個字符串的比較。即自己寫一個strcmp函數。*/#include<iostream.h>#include<string.h>intchange(char*,char*);voidmain()(intresult;chara10="dog&quo

50、t;charb20="sdlkdogsddydodog"cout.write(a,10)<<endl;cout.write(b,20)<<endl;result=change(a,b);cout<<"result="<<result<<endl;intchange(char*p,char*q)(intsum=0,i=0,flag=0;while(*p!='0'&&*q!='0')(if(*p>*q)(flag=1;/第一個字符串大于第二個字符

51、串返回1break;if(*p<*q)(flag=-1;/第二一個字符串大于第一個字符串返回-1break;if(*p=*q)&&*(p+1)='0'&&*(q+1)!='0')(flag=-1;/第二一個字符串大于第一個字符串返回-1break;*p+;*q+;returnflag;/*8、將一個5x5的矩陣中最大的元素放在中心,四個角分別放四個最小的元素(順序為從左到右,從上到下順序依次從小到大存放),寫一函數實現之。用main函數調用。*/#include<iostream.h>voidpsort(inta

52、);voidmain()inti;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;i<25;i+)cout<<""<<ai;cout<<endl;psort(a);voidpsort(inta)inti,j,k=0,temp,b55;for(i=0;i<25;i+)/每循環一次確定數組中一個數的位置for(j=i+1;j<25;j+)/每次循環對比一個數的大小if(ai>aj)temp=aj;aj=ai;

53、ai=temp;for(i=0;i<5;i+)for(j=0;j<5;j+)bij=ak+;temp=b44;/確定5個位置的數值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;i<5;i+)(for(j=0;j<5;j+)(cout<<"t"<<bij;cout<<endl;第7章結構體與共用體/*1、用指針和結構體實現一雙向鏈表,并實現其相應的增、刪、遍歷

54、功能,并在實例中應用它。*/#include<iostream.h>typedefstructnode(intnumber;structnode*next;structnode*parent;Node,*LinkNode;classLinkClass(public:LinkNodefirst,current;/頭指針,當前指針voidinit();/初始化函數LinkNodeInsert(intdata,LinkNodecur);/插入函數voidRemove(LinkNodep);/刪除函數voidPrior(LinkNodehead);/遍歷函數;voidLinkClass:i

55、nit()(structnode*head=newstructnode;structnode*tail=newstructnode;head->parent=NULL;head->next=tail;tail->parent=head;tail->next=NULL;first=current=head;LinkNodeLinkClass:Insert(intdata,LinkNodecur)(structnode*newNode=newstructnode;newNode->number=data;newNode->next=cur->next;cu

56、r->next=newNode;newNode->parent=cur;newNode->next->parent=newNode;cur=newNode;returncur;voidLinkClass:Prior(LinkNodehead)(LinkNodecur=head->next;while(cur->next!=NULL)(cout<<cur->number<<""cur=cur->next;cout<<""<<endl;voidLinkClass:

57、Remove(LinkNodecur)(LinkNodetemp=cur;temp->parent->next=temp->next;temp->next->parent=temp->parent;delete(temp);voidmain()(LinkClasslc;lc.init();LinkNodecur=lc.current;for(inti=0;i<=10;i+)/用循環來初始化結構體內的number(cur=lc.Insert(i,cur);/調用插入函數LinkNodehead=lc.first;cout<<"沒調用

58、刪除函數的遍歷:"<<endl;lc.Prior(head);/遍歷函數for(intj=0;j<=3;j+)/刪除元素6(cur=cur->parent;lc.Remove(cur);/執行刪除函數cout<<"調用刪除函數后的遍歷:"<<endl;lc.Prior(head);/*2、用指針和結構體實現棧及其方法,并在實例中應用它。*/#include<stdlib.h>#include<iostream.h>#defineSTACK_INIT_SIZE100#defineSTACKIN1

59、0structstackint*top;int*base;intstacksize;intinitstack(stack&s)s.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int);if(!s.base)return0;s.top=s.base;s.stacksize=STACK_INIT_SIZE;return1;intgettop(stacks,int&e)if(s.top=s.base)return0;e=*(s.top-1);return1;intpush(stack&s,inte)if(s.top-s.base>=

60、s.stacksize)s.base=(int*)realloc(s.base,(s.stacksize+STACKIN)*sizeof(int);if(!s.base)return0;s.top=s.base+s.stacksize;s.stacksize+=STACKIN;*s.top+=e;return1;intpop(stack&s,int&e)if(s.top=s.base)return0;e=*-s.top;return1;;voidmain()(stacks;intresult,e=0;result=s.initstack(s);if(result=1)cout&

61、lt;<"建棧成功!"<<endl;elsecout<<"建棧失敗!"<<endl;for(inti=0;i<5;i+)result=s.push(s,i);if(result=1)cout<<"初始化棧成功!"<<endl;elsecout<<"初始化棧失敗!"<<endl;s.gettop(s,e);cout<<"棧頂元素為:"<<e<<endl;result=

62、s.pop(s,e);if(result=1)cout<<"刪除棧頂元素成功!"<<endl;elsecout<<"刪除棧頂元素失敗!"<<endl;s.pop(s,e);cout<<"刪除的棧頂元素為:"<<e<<endl;/*3、編寫一函數print,打印一個學生的成績數組,該數組中有5個學生的數據記錄,每個記錄包括numnamsscore3,用主函數輸入這些記錄,用print函數輸出這些記錄。4、在上題的基礎上,編寫一個函數input,用來輸入5

63、個學生的數據記錄。*/#include<string.h>#include<iostream.h>structstudent(public:intnum;charname20;intscore3;classcontral(public:voidprint(structstudent*p,intcount);intinput(structstudent*p,intcount);;voidcontral:print(structstudent*p,intcount)(for(inti=0;i<=count;i+)(cout<<"Num:"

64、;<<p->num<<endl;cout<<"Name:"<<p->name<<endl;cout<<"JAVA:"<<p->score0<<endl;cout<<"C+:"<<p->score1<<endl;cout<<"English:"<<p->score2<<endl;p+;intcontral:input(st

65、ructstudent*p,intcount)(while(true)(cout<<"請輸入學號:"<<endl;cin>>p->num;cout<<"請輸入姓名:"<<endl;cin>>p->name;cout<<"請輸入JAVA分數:"<<endl;cin>>p->score0;cout<<"請輸入C+心數:"<<endl;cin>>p->score1;cout<<"請輸入English分數:"<<endl;cin>>p->score2

溫馨提示

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

最新文檔

評論

0/150

提交評論