北京理工大學復試與初試試題_第1頁
北京理工大學復試與初試試題_第2頁
北京理工大學復試與初試試題_第3頁
北京理工大學復試與初試試題_第4頁
北京理工大學復試與初試試題_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

經典word整理文檔,僅參考,雙擊此處可刪除頁眉頁腳。本資料屬于網絡整理,如有侵權,請聯(lián)系刪除,謝謝!zhouheng1212發(fā)表于2010-1-1413:26:10|只看該|倒序瀏覽cin>>s;t=s[3-i];t[4]='\0';cout<<"反序后結果為:"<<t<<endl;}2.設a、b、c均是0到9之間的數(shù)字,abc、bcc是兩個三位數(shù),且有:abc+bcc=532。求滿#include<iostream.h>voidmain(){inta,b,c;for(a=1;a<10;a++)for(b=1;b<10;b++)for(c=0;c<10;c++)if((a*100+b*10+c+b*100+c*10+c)==532)cout<<"滿足條件的a,b,c為:"<<a<<","<<b<<","<<c<<endl;cout<<"滿足條件的a,b,c為:3,2,1"<<endl;3.一個數(shù)如果恰好等于它的各因子(該數(shù)本身除外)子和,如:6=3+2+1,則稱其為“完數(shù)”;若因子之和大于該數(shù),則稱其為“盈數(shù)”。求出2到60之間所有“完數(shù)”和“盈數(shù)”,并以如下形式輸出:E:e1e2e3......(ei為完數(shù))G:g1g2g3......(gi為盈數(shù))#include<iostream.h>voidsave(ints[],intx,intflag);intfun(intx);voidmain(){intE[60],G[60];intflag,i;for(i=6;i<=60;i++){flag=fun(i);if(flag==0)save(E,i,0);elseif(flag==1)save(G,i,1);}cout<<"E:";for(i=0;E!=0;i++)cout<<E<<"";cout<<endl<<"G:";for(i=0;G!=0;i++)cout<<G<<"";cout<<endl;}voidsave(ints[],intx,intflag){statici=0,j=0;if(flag==0){s=x;s[i+1]=0;i++;}else{s[j]=x;s[j+1]=0;j++;}}intfun(intx){inti,sum=0;for(i=1;i<=x/2;i++)if(x%i==0)sum+=i;if(sum==x)return0;elseif(sum>x)return1;elsereturn-1;}4.從鍵盤輸入4個學生的數(shù)據(包括姓名、年齡和成績),并存放在文件sf1上。從該文件讀出這些數(shù)據,按成績從高到底排序,并輸出其中成績次高者的所有數(shù)據。2001年A1、編寫程序,計算下列分段函數(shù)y=f(x)的值。y=-x+2.50<=x<2y=2-1.5(x-3)(x-3)2<=x<4y=x/2-1.54<=x<6#include<iostream.h>floatfun(floatx){floaty;if(x>=0&&x<2)y=2.5-x;elseif(x>=2&&x<4)y=2-1.5*(x-3)*(x-3);elseif(x>=4&&x<6)y=x/2-1.5;returny;}voidmain(){floatx;cout<<"請輸入x的值:";cin>>x;while(x<0||x>6){cout<<"非法,請重新輸入:";cin>>x;}cout<<"結果為:"<<fun(x)<<endl;}2、編寫程序,讀入一個整數(shù)N。若N為非負數(shù),則計算N到2N之間的整數(shù)和;若N為一個負數(shù),則求2N到N之間的整數(shù)和。說明:用了下公式#include<iostream.h>#include<math.h>voidmain(){intN;cout<<"請輸入一個整數(shù):";cin>>N;cout<<N<<"到"<<2*N<<"之間的整數(shù)和為:"<<(abs(N)+1)*1.5*N<<endl;}3、設N是一個四位數(shù),它的9倍恰好是其反序數(shù)(例如:1234的反序數(shù)是4321),求N的值。說明:本題結果唯一4、N個人圍成一圈順序編號,從1號開始按1、2、3順序報數(shù),報3者退出圈外,其余的人再從1、2、3開始報數(shù),報3的人再退出圈外,依次類推。請按退出順序輸出每個退出人的原序號。要求使用環(huán)行鏈表編程。說明:約瑟夫環(huán)#include<iostream.h>#include<malloc.h>typedefstructnode{intnum;structnode*next;}LNode;voidmain(){intN,i;LNode*head,*p,*q;cout<<"請輸入人數(shù):";cin>>N;p=(LNode*)(malloc(sizeof(LNode)));p->num=1;head=p;for(i=1;i<N;i++){p->next=(LNode*)(malloc(sizeof(LNode)));p=p->next;p->num=i+1;}p->next=head;p=head;cout<<"出列順序為:";while(p->next!=p){q=p->next;p=q->next;q->next=p->next;cout<<p->num<<"";deletep;p=q->next;}cout<<p->num<<endl;deletep;}2001年B1、請輸入高度h,輸入一個高為h,上底邊長為h的等腰梯形(例如h=4,圖形如下)。****************************#include<iostream.h>voidmain(){inti,j,h;cout<<"請輸入h:";cin>>h;for(i=0;i<h;i++){}for(j=0;j<h+i;j++)cout<<"*";cout<<endl;}2、請編寫一個程序,從鍵盤上輸入n(n的范圍是1~20),求n的階乘。#include<iostream.h>intfun(intn);voidmain(){intn;cout<<"請輸入n:";cin>>n;while(n>20||n<1){cout<<"非法,請重新輸入:";cin>>n;}cout<<"n的階乘為:"<<fun(n)<<endl;}intfun(intn){inti,result=1;for(i=1;i<=n;i++)result*=i;returnresult;}3、從鍵盤上任意輸入一個長度不超過20的字符串,對所輸入的字符串,按照ASCII碼的大小從小到大進行排序,請輸出排序后的結果。#include<iostream>#include<string>usingnamespacestd;voidmain(){charstr[21];inti,j,len;charch;cout<<"請輸入字符串:";cin.getline(str,20);len=strlen(str);for(i=0;i<len-1;i++)for(j=0;j<len-1-i;j++)if(str[j]>str[j+1]){ch=str[j];str[j]=str[j+1];str[j+1]=ch;}cout<<"排序后的字符串為:"<<str<<endl;}2002年A1、某人有8角的郵票5張,1元的郵票4張,1元8角的郵票6張,用這些郵票中的一張或若干張可以得到多少中不同的郵資?說明:這道題真的找不到好的算法,希望有好算法的朋友發(fā)站短給我,多謝#include<iostream.h>voidmain(){inti,j,k;for(i=0;i<=5;i++)for(j=0;j<=4;j++)for(k=0;k<=6;k++)cout<<i*0.8+j+k*1.8<<"";}2、輸入n值,使用遞歸函數(shù),求楊輝三角形中各個位置上的值,按照如下形式打印輸出圖形。例如:當n=6時。11112113311464115101051說明:遞歸#include<iostream.h>intfun(intn,intk){if(k==0||n==k)return1;elsereturnfun(n-1,k-1)+fun(n-1,k);}voidmain(){intn,i,j;cout<<"請輸入n:";cin>>n;for(i=0;i<n;i++){for(j=0;j<=i;j++)cout<<fun(i,j)<<"";cout<<endl;}}2002年B1、打印所有不超過n(n<256)的,其平方具有對稱性質的數(shù)。如11*11=121。#include<iostream.h>#include<stdlib.h>boolfun(intn){intx,i,t;charstr[10];x=n*n;i=0;while(x){t=x%10;str[i++]=t+48;x/=10;}str='\0';if(n*n==atoi(str))returntrue;elsereturnfalse;}voidmain(){intn,i;cout<<"請輸入n:";cin>>n;for(i=1;i<=n;i++)if(fun(i))cout<<i<<"";cout<<endl;}2、編寫一個求菲波那奇數(shù)列的遞歸函數(shù),輸入n值,使用該遞歸函數(shù),輸出如下圖形。例如:當n=6時。001101123011235801123581321011235813213455說明:遞歸#include<iostream.h>intfun(intn){if(n==0)return0;elseif(n==1)return1;elsereturnfun(n-2)+fun(n-1);}voidmain(){intn,i,j;int*p=newint[60];cout<<"請輸入n:";cin>>n;for(i=0;i<2*n-1;i++)p[i]=fun(i);for(i=0;i<n;i++){for(j=0;j<2*i+1;j++)cout<<p[j]<<"";cout<<endl;}}2003年1、輸入球的中心點和球上某一點的坐標,計算球的半徑和體積。#include<iostream.h>#include<math.h>voidmain(){doubler;intx1,x2,y1,y2,z1,z2;constdoublePI=3.1416;cout<<"請輸入中心點坐標:";cin>>x1>>y1>>z1;cout<<"請輸入球上某一點的坐標:";cin>>x2>>y2>>z2;r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));cout<<"半徑為:"<<r<<endl;cout<<"體積為:"<<(4*PI*r*r*r)/3<<endl;}2、手工建立一個文件,文件種每行包括學號、姓名、性別和年齡。每一個屬性使用空格分開。文件如下:01李江男2102劉唐男2303張軍男1904王娜女19根據輸入的學號,查找文件,輸出學生的信息。#include<iostream>#include<fstream>#include<string>#include<stdlib.h>usingnamespacestd;voidmain(){constintLEN=100;chars[LEN],k[LEN],*temp;intnum;cout<<"請輸入要查找學生的學號:";cin>>num;ifstreamfin("myfile.txt";while(fin.getline(s,LEN)){strcpy(k,s);temp=strtok(k,"");if(atoi(temp)==num){cout<<num<<"號學生的信息為:"<<s<<endl;break;}}}3、輸入年月日,計算該填是本年的第幾天。例如1990年9月20日是1990年的第263天,2000年5月1日是2000年第122天。(閏年:能被400正除,或能被4整除但不能被100整除。每年1、3、5、7、8、10為大月)#include<iostream.h>voidmain(){inti,sum=0,year,month,day;constintnum[12]={31,28,31,30,31,30,31,31,30,31,30,31};cout<<"請輸入年月日:";cin>>year>>month>>day;for(i=0;i<month-1;i++)sum+=num;sum+=day;if((year%4==0&&year%100!=0)||year%400==0)sum+=1;cout<<year<<"年"<<month<<"月"<<day<<"日是"<<year<<"年的第"<<sum<<"天"<<endl;}2004年第一題是建立一個角類,在這個類中重載減號運算符,并實現(xiàn)求出角度的正弦值的函數(shù)。#include<iostream.h>#include<math.h>constdoublePI=3.1416;classangle{public:angle(){}angle(intx){X=x;}angleoperator-(anglec);voidxsin();private:};intX;#include"angle.h"voidangle::xsin(){doublex;x=(X*PI)/180;cout<<"正弦值為:"<<sin(x)<<endl;}angleangle:{perator-(anglec)returnangle(X-c.X);}#include"angle.h"voidmain(){anglec1(90),c2(60),c3;c3=c1-c2;c1.xsin();c2.xsin();c3.xsin();}第二題是建立一個求一元二次方程解的類(a*x^2+b*x+c=0),輸入系數(shù)a,b,c的值后打印出這個方程的解來,也比較簡單。需要注意的是系數(shù)a不能為零以及方程有無解,單解還是雙解的情況。#include<iostream.h>classequation{public:equation(floata,floatb,floatc):a(a),b(b),c(c){}floatD(){returnb*b-4*a*c;}voidfun();private:};floata,b,c;#include<math.h>#include"equation.h"voidequation::fun(){floatd=D();if(d==0)cout<<"單解為:"<<-b/(2*a)<<endl;elseif(d>0)cout<<"雙解為:"<<(-b+sqrt(d))/(2*a)<<","<<(-b-sqrt(d))/(2*a)<<endl;elsecout<<"復數(shù)解為:"<<-b/(2*a)<<"+"<<sqrt(-d)/(2*a)<<"i,"<<-b/(2*a)<<"+"<<-sqrt(-d)/(2*a)<<"i"<<endl;}#include"equation.h"voidmain(){floata,b,c;cout<<"請輸入(abc):";cin>>a>>b>>c;while(a==0){cout<<"非法,請重新輸入(abc):";cin>>a>>b>>c;}equatione(a,b,c);e.fun();}第三道題是實現(xiàn)一個多項式的類(a+b*x+c*x^2+d*x^3+...+),要求輸入該多項式的系數(shù)和x的值后打印出這個多項式的值。這道題本身并不難,但他要求用好的算法(實際上就是遞歸)。#include<iostream.h>floatfun(floats[],floatx,intn,intN){if(n==0)returns[N];elsereturns[N-n]+x*fun(s,x,n-1,N);}voidmain(){inti,N;floatnum[60],x;cout<<"請輸入最高項次數(shù):";cin>>N;cout<<"請依次輸入系數(shù):";for(i=0;i<=N;i++)cin>>num[i];cout<<"請輸入x:";cin>>x;cout<<"結果為:"<<fun(num,x,N,N)<<endl;}2005年第一題是給定一個程序,關于字符串的,要求輸入并調試,說出此程序的意圖。意圖是按字母順序對兩個字符串比較排序。第二問要求用盡可能少的語句對該程序進行修改,使其能夠對兩個字符串比較長度排序。本題滿分20。第二題是要求編寫一個日期類,要求按xxxx-xx-xx的格式輸出日期,實現(xiàn)加一天的操作,不考慮閏年問題,所有月份設為30天。本題黑盒測試時,輸入2004年3月20日,得到加一天后時為2004-3-21,能得一部分分數(shù)。輸入2004年3月30日,得到加一天后時間為2004-4-1,能得一部分分數(shù)。輸入2004年12月30日,得到加一天后時間為2005-1-1,且有時間越界處理,能得全部分數(shù)。本題滿分30。#include<iostream.h>classdate{public:date(inty,intm,intd):year(y),month(m),day(d){}voiddisplay();voidaddDay();private:intyear;intmonth;intday;};#include"date.h"voiddate::display(){cout<<year<<"-"<<month<<"-"<<day<<endl;}voiddate::addDay(){day++;if(day>30){day%=30;month++;if(month>12){month%=12;year++;}}}#include"date.h"voidmain(){inty,m,d;cout<<"請輸入(年月日):";cin>>y>>m>>d;while(y<0||m<0||m>12||d<0||d>30){cout<<"非法,請重新輸入(年月日):";cin>>y>>m>>d;}dated1(y,m,d);d1.addDay();d1.display();}第三題要求編寫一個復數(shù)類,要求有4條。一是有構造函數(shù),能對復數(shù)初始化。二是對復數(shù)c1,c2,c3.....能實現(xiàn)連加運算,令c=c1+c2+c3+.....此處可以重載加法操作符。三是有函數(shù)實現(xiàn)兩個復數(shù)相加,并按照a+ib的形式輸出。四是能實現(xiàn)對一個復數(shù)c=a+ib,定義doublex=c有效,使x的值為實部和虛部之和。本題滿分50?!?include<iostream>usingnamespacestd;classcomplex{public:complex(doubler=0.0,doublei=0.0){real=r;imag=i;}complexoperator+(complexc2);voiddisplay();operatordouble(){//重載類型轉換操作return(real+imag);}private:};doublereal;doubleimag;#include"complex.h"complexcomplex::operator+(complexc2){returncomplex(real+c2.real,imag+c2.imag);}voidcomplex::display(){cout<<real<<"+"<<imag<<"i"<<endl;}#include"complex.h"voidmain(){complexc1(5,4),c2(2,10),c3(6,9),c4;c4=c1+c2+c3;c4.display();doublex=c4;cout<<x<<endl;}2006年1.寫一個程序判斷字符串中數(shù)字的位置(不限制使用面向對象編程)例如:輸入輸出a3b4c5246#include<iostream>#include<ctype.h>#include<string>usingnamespacestd;voidmain(){stringstr;inti;cout<<"請輸入字符串:";getline(cin,str);for(i=0;str[i]!='\0';i++)if(isdigit(str[i]))cout<<i+1<<"";cout<<endl;}2.寫一個類,能接受int型的變量,接收變量后能存儲原變量(譬如12345)和其反向變量(54321),最多處理數(shù)量為10個,當輸入達到10個或者輸入變量為0的時候停止。并且在類銷毀前輸出存儲的所有變量。例如:輸入:12345,2234,0輸出:123455432122344322#include<iostream.h>#include<stdlib.h>classCInverse{public:CInverse();voidinverse();~CInverse();private:intnum[10];intinverseNum[10];intcountNum;};#include"CInverse.h"CInverse::CInverse(){intt,i;cout<<"請輸入整數(shù),以0停止:";cin>>t;for(i=0;i<10&&t!=0;i++){num[i]=t;cin>>t;}countNum=i;}voidCInverse::inverse(){charstr[10];intt,i,j,x;for(i=0;i<countNum;i++){x=num;j=0;while(x){t=x%10;str[j++]=t+48;x/=10;//加48}str[j]='\0';inverseNum=atoi(str);}}CInverse::~CInverse(){inti;for(i=0;i<countNum;i++)cout<<num<<""<<inverseNum<<endl;}#include"CInverse.h"voidmain(){}CInversec1;c1.inverse();3.寫一個CTriangle類,要求可以接受CTriangle(y,x)形式的構造,創(chuàng)建在坐標系中的直角三角形樣子如下三點的坐標分別是A(0,y)B(0,0)C(x,0)實現(xiàn)+運算,并且能夠處理鍵盤連續(xù)輸入若干個(少于十個)三角形,并且連加(相加時候三角形邊長長度相加,方向同第一個三角形)。輸入0后結束并輸出最后得出的三角形的三個坐標值。#include<iostream.h>classCTriangle{public:CTriangle(inty=0,intx=0){Ay=y;Cx=x;}CTriangleoperator+(CTrianglec2);voidset(inty=0,intx=0){Ay=y;Cx=x;}voiddisplay();private:intAy;intCx;};#include"CTriangle.h"CTriangleCTriangle::operator+(CTrianglec2){returnCTriangle(Ay+c2.Ay,Cx+c2.Cx);}voidCTriangle::display(){cout<<"A(0,"<<Ay<<")B(0,0)C("<<Cx<<",0)"<<endl;}#include"CTriangle.h"voidmain(){inty,x,i,N;CTrianglec[10],sum;cout<<"請輸入坐標:";cin>>y;for(i=0;y!=0;i++){cin>>x;c[i].set(y,x);cin>>y;}N=i;sum.set();//置0for(i=0;i<N;i++)sum=sum+c;sum.display();}2007年1。一個小球,從高為H的地方下落,下落彈地之后彈起高度為下落時的一半,比如第一次彈起高度為H/2,如此往復,計算從小球H高度下落到第n次彈地往返的總路程。要求:1。用遞歸的方法實現(xiàn)2。輸入H和n,輸出結果3。注意程序的健壯性4??梢杂肅或C++實現(xiàn)#include<iostream.h>#include<math.h>floatfun(intn){if(n==1)return1;elsereturnfun(n-1)+1/pow(2,n-2);}voidmain(){floatH;intn;cout<<"請輸入H和n:";cin>>H>>n;cout<<"小球從"<<H<<"高度下落到第"<<n<<"次彈地往返的總路程為:"<<fun(n)*H<<endl;}2。創(chuàng)建一個CPoint類,代表平面直角坐標系中的點,創(chuàng)建構造函數(shù)和運算符重載函數(shù),運算符重載為類重載(非友元重載),可以實現(xiàn)計算兩個點之間的距離??梢愿鶕枰尤胱约旱某蓡T變量或成員函數(shù)要求:1。輸入兩個點的坐標,輸出兩個點之間的距離2。重載運算符為“-”#include<iostream.h>classCPoint{public:CPoint(intx=0,inty=0){X=x;Y=y;}floatoperator-(CPointc2);private:intX;intY;};#include"CPoint.h"#include<math.h>floatCPoint::operator-(CPointc2){returnsqrt((X-c2.X)*(X-c2.X)+(Y-c2.Y)*(Y-c2.Y));}#include"CPoint.h"voidmain(){intx1,y1,x2,y2;cout<<"請輸入兩個點的坐標:";cin>>x1>>y1>>x2>>y2;CPointc1(x1,y1),c2(x2,y2);cout<<"兩點間的距離為:"<<c1-c2<<endl;}3。創(chuàng)建一個CTriangle類,需要用到第二題中創(chuàng)建的類,即用3點來代表一個三角形,輸入三個點的坐標,實現(xiàn)判斷此三角形是不是直角三角形,并輸出此三角形的周長。可以根據需要加入自己的成員變量或成員函數(shù)要求:1。輸入三個點的坐標,輸出周長并給出是否直角三角形的信息2。注意程序的健壯性#include<iostream.h>classCPoint{public:CPoint(intx=0,inty=0){X=x;Y=y;}floatoperator-(CPointc2);private:};intX;intY;classCTriangle{public:CTriangle(CPointa,CPointb,CPointc):A(a),B(b),C(c){AB=A-B;BC=B-C;AC=A-C;}voiddisplay();boolfun();private:};CPointA,B,C;floatAB,BC,AC;#include"CTriangle.h"#include<math.h>floatCPoint::operator-(CPointc2){return(float)sqrt((X-c2.X)*(X-c2.X)+(Y-c2.Y)*(Y-c2.Y));}voidCTriangle::display(){cout<<"周長為:"<<AB+BC+AC<<endl;}boolCTriangle::fun(){floata=AB,b=BC,c=AC,t;if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}if(fabs(a*a+b*b-c*c)<10e-6)returntrue;elsereturnfalse;}#include"CTriangle.h"voidmain(){intx1,y1,x2,y2,x3,y3;cout<<"請輸入三個頂點的坐標:";cin>>x1>>y1>>x2>>y2>>x3>>y3;CPointp1(x1,y1),p2(x2,y2),p3(x3,y3);CTrianglec(p1,p2,p3);if(c.fun()){cout<<"是直角三角形"<<endl;c.display();}elsecout<<"不是直角三角形"<<endl;}2008年1、存儲一組姓名,如Apple,Tom,Green,Jack要求能排序、按字母順序插入、并顯示。#include<iostream>#include<string>usingnamespacestd;voidmain(){constintN=10;strings[N],temp;inti,j,K;cout<<"請輸入字符串個數(shù):";cin>>K;cout<<"請輸入"<<K<<"個字符串:"<<endl;{cin>>temp;for(j=i;j>0;j--)if(temp<s[j-1])s[j]=s[j-1];s[j]=temp;}cout<<"排序后的結果為:"<<endl;for(i=0;i<K;i++)}急找馬克思中國化專業(yè)試題北京理工大學考研復試分數(shù)線及復試信息經驗匯總北京理工大學2007年477計算機專業(yè)基礎試題(抱歉,僅有前3頁)北京大學考研復試分數(shù)線及復試信息經驗匯總對2013數(shù)學試題命制的若干猜測及我最重要的5點聲明(xflhp)經濟學院2013招生發(fā)生重大變化,人數(shù)減少,復試只有面試查看更多>>閱讀答案微觀經濟學試題答案南郵試題答案南開大學復試試題六級答案課后答案考研真題答案考研復試上機計算+150+150精品文章總評分:威望+150K幣+150查看全部評分梅花香自苦寒來,寶劍鋒從磨礪出!.回頂部九07年:一個簡單的學生管理系統(tǒng)1、要求建立學生類。2、有構造和析構函數(shù)。3、能夠查找和添加、刪除學生信息。4、按升序和降序對學生信息進行排序,并進行輸出。5、有輸入、輸出接口。6、要求有一個菜單界面。7、有一個輸出接口。要求:1.不需要可視化編程2.上機時間兩個小時//Student.h文件structStu{intno;//學號charname[10];//姓名doublescore;//成績Stu*next;//};typedefStu*pStu;classStudent{public:Student();//構造函數(shù)~Student();//釋放相關空間voidSearch(int);//查找指定學號的學生信息//添加新紀錄voidAddRec(int,char*,double);voidDelRec(int);//刪除指定學號的學生信息voidDisplay(intsytle=0);輸出,1:按升序排序并輸出,2:按降序排序并輸出)//按指定方式輸出學生信息(0(默認):按當前順序輸出private://一下函數(shù),考慮到程序設計的模塊化,定義為內部函數(shù)供調用voidAscSort();//按升序排列數(shù)據voidDecSort();//按降序排列數(shù)據voidPrint();//輸出數(shù)據private:pStubase;//存儲空間intlength;//紀錄存儲的學生信息的條目數(shù)};//Student.cpp文件#include"Student.h"#include"iostream.h"#include"malloc.h"#include<string.h>Student::Student()//構造函數(shù){//采用帶頭結點的鏈表base=(pStu)malloc(sizeof(structStu));base->no=0;strcpy(base->name,"";base->score=0.0;base->next=NULL;length=0;}Student::~Student()//釋放相關空間{pStutemp=base;while(temp){base=base->next;free(temp);temp=base;}}voidStudent::Search(intno)//查找指定學號的學生信息{pStutemp=base->next;while(temp){if(temp->no==no){cout<<"你要查找的學號為:"<<no<<"的學生信息為:"<<endl;cout<<"學號:\t姓名:\t成績:"<<endl;cout<<temp->no<<"\t"<<temp->name<<"\t"<<temp->score<<endl;break;}temp=temp->next;}if(!temp)cout<<"不存在學號為:"<<no<<"的學生信息!"<<endl;}voidStudent::AddRec(intno,char*name,doublescore)//添加新紀,添加到紀錄的尾部{pStunow=(pStu)malloc(sizeof(Stu));//定義臨時變量now->no=no;strcpy(now->name,name);now->score=score;now->next=NULL;pStutemp=base;while(temp->next)temp=temp->next;temp->next=now;length++;}voidStudent:{elRec(intno)//刪除指定學號的學生信息pStup1,p2;p1=base->next;p2=base;while(p1->next!=NULL&&p1->no!=no){p2=p1;p1=p1->next;//向下查找}if(p1->no==no){p2->next=p1->next;free(p1);length--;}elsecout<<"刪除操作未正常完成,不存在學號為:"<<no<<"紀錄!"<<endl;}voidStudent::Display(intsytle)//按指定方式輸出學生信息(0(默認):按當前順序輸出輸出,1:按升序排序并輸出,2:按降序排序并輸出){switch(sytle){case0:Print();break;case1:AscSort();Print();break;case2:DecSort();Print();break;}}voidStudent:rint(){pStutemp=base->next;cout<<"學號:\t姓名:\t成績:"<<endl;while(temp){cout<<temp->no<<"\t"<<temp->name<<"\t"<<temp->score<<endl;temp=temp->next;}}voidStudent::AscSort(){if((length!=1)&&(length!=0)){cout<<length<<endl;pStutemp=base->next->next;pStup1,p2;p1=base;p2=base->next;p2->next=NULL;while(temp)//temp為指向待調整的有效結點{p1=base;p2=base->next;while((p2->next!=NULL)&&(p2->score<=temp->score)){p1=p2;p2=p2->next;}if(p2->score>temp->score){pStuptemp=temp->next;p1->next=temp;temp->next=p2;temp=ptemp;}else{pStuptemp=temp->next;p2->next=temp;temp->next=NULL;temp=ptemp;}}}else{cout<<"當前信息數(shù)目為:"<<length<<"不需要啟動排序算法!"<<endl;}}voidStudent::DecSort(){if((length!=1)&&(length!=0)){cout<<length<<endl;pStutemp=base->next->next;pStup1,p2;p1=base;p2=base->next;p2->next=NULL;while(temp)//temp為指向待調整的有效結點{p1=base;p2=base->next;while((p2->next!=NULL)&&(p2->score>=temp->score)){p1=p2;p2=p2->next;}if(p2->score<temp->score){pStuptemp=temp->next;p1->next=temp;temp->next=p2;temp=ptemp;}else{pStuptemp=temp->next;p2->next=temp;temp->next=NULL;temp=ptemp;}}}else{}cout<<"當前信息數(shù)目為:"<<length<<"不需要啟動排序算法!"<<endl;}//main.cpp文件#include"Student.h"#include"iostream.h"Students;//定義全局數(shù)據voidmain(){intno;charname[10];doublescore;intsytle=0;intsytle_inner=0;start:cout<<"請選擇要進行的操作:1-插入,2-刪除,3-查找,4-輸出,0-退出"<<endl;cin>>sytle;switch(sytle){case1:cout<<"請輸入學生的相關信息:"<<endl;cout<<"學號:";cin>>no;cout<<"姓名:";cin>>name;cout<<"成績:";cin>>score;s.AddRec(no,name,score);gotostart;break;case2:case3:case4:cout<<"請輸入要刪除學生的學號:"<<endl;cout<<"學號:";cin>>no;s.DelRec(no);gotostart;break;cout<<"請輸入要查詢學生的學號:"<<endl;cout<<"學號:";cin>>no;s.Search(no);gotostart;break;tab:cout<<"請輸入你想要的輸出方式(0-默認,1-升序,2-降序,3-返回上一層):"<<endl;cout<<"輸出方式:";cin>>sytle_inner;s.Display(sytle_inner);if(sytle_inner!=3)gototab;gotostart;break;case0:gotoend;break;}end:;}真題、單項選擇題(每小題1分,共10分)1、在數(shù)據結構中,數(shù)據的最小單位是()A.數(shù)據元素B.字節(jié)C.數(shù)據項D.結點2、數(shù)據元素之間的關系稱為()A.操作B.結構C.數(shù)據對象數(shù)據集合3、若經常需要在線性表的尾部插入數(shù)據,應采用的存儲結構是()A.順序存儲結構B.鏈式存儲結構C.兩種都合適D.兩種都不合適4.在一個單鏈表中,已知指針p指向其中的某個結點,若在該節(jié)點前插入一個由指針s指向的結點,則需執(zhí)行()A.s-﹥next=p-﹥next;p-﹥next=sB.p-﹥next=s;s-﹥next=pC.s=p-﹥next,p-﹥next=s;s-﹥next=r;D.僅靠已知條件無法實現(xiàn)5.靜態(tài)鏈表與動態(tài)鏈表相比,其缺點是()A.插入刪除時需移動較多的數(shù)據B.有可能浪費較多的存儲空間C.不能隨機存取以上都不是6.下列更合適表示隊列的鏈表結構是()A.單向鏈表B.單向循環(huán)鏈表C.雙向鏈表D.雙向循環(huán)鏈表7.若L表示單項表的頭指針,正確的表示是()A.ElemTypeLB.Elemtype*LC.Linklist*LD.LinklistL8.設廣義表L=(a,b,Getail(Getail(LA.(())9.若用一堆數(shù)組表示一個深度為5,結點個數(shù)10的二叉數(shù),數(shù)組的長度至少為()A.10B.16C.31D.6410.下面不能唯一確定一棵二叉樹的兩個遍歷序列是()A.先序序列和中序序列B.先序序列和后序序列C.后序序列和中序序列D.都不能十、填空題(每空1分,共10分)1.在一個單鏈表中,刪除p所指結點的后繼結點,需執(zhí)行的語句序列如下:_______;p-﹥next=q-﹥next;__________;2.在長度為n線性表中插入一個元素,采用順序存儲結構的復雜度為____;采用鏈式存儲結構的復雜度為______.3.在數(shù)的孩子兄弟表示法中,二叉鏈表的左指針指向_____,右指針指向¬¬¬______.4.在圖的數(shù)據結構中,頂點表示_____,邊表示______.5.在堆排序中,首先需要進行的操作是______.6.在哈希造表中,不同的關鍵字產生同一哈希地址的現(xiàn)象,稱為_____.十一、簡答題(每小題5分,共30分)1.在線性表和棧的順序存儲結構中,可以用realloc動態(tài)增加存儲空間,問此方法不適合用于2.請簡要說明下列函數(shù)的主要功能。Voidfunc(LinklistL1,LinkListL2){LNode*p,*q,*r;q=L2-﹥next;while(q){p=L1while(p-﹥next){if(p-﹥next-﹥date==q-﹥date){r=p-﹥next;p-﹥next=r-﹥next;free(r);}P=p-﹥next;}q=q-﹥next;}Return;}3.若有一個一堆數(shù)組A,它的元素下標從1開始到MAX。要在數(shù)組A中建立兩個棧共享同一個空間,棧S1的棧頂指針為top1,棧S2的棧頂指針為top2,為了最大限度利用數(shù)組A的空間,則應該如何共享?棧滿和??盏臈l件是什么?4.在下列算法中,F(xiàn)indPath(GraphG,intv,ints,List&PATH)是求圖中G中頂點v到s的一條路徑(用線性表示的一個頂點序列),請在空白處填入合適的語句或表達式。提示:在此算法中,圖的頂點均用頂點的編號表示。StatusFindPath(GraphG,intv,List&PATH){Visited[v]=TRUE;//標示第v個頂點已被訪問ListInsert(PATH,ListLength(PATH)+1,v);If(v--a)ReturnTRUE;For(w=FirstAdjVex(G,v);w!=-1;w=NextAdjVex(G,v,w))If(______)If(FindPath(G,w,s,PATH))returnTRUE;ListDelete(PATH,__________,e);ReturnFALSE;}5.當B-樹作為文件的索引時,一個結點除了包含關鍵字和指向孩子結點的指針外,還包含指向文件記錄的指針。假設一個結點占用的最大空間被限定為4096字節(jié),每個關鍵字和每個指針都占2各字節(jié),如果采用n階B樹作為文件的索引,則它的最大的階數(shù)應該是多少?6.采用希爾排序法,對以下關鍵字序列按遞增次序排序,使用的增量序列為531,請給出每趟排序的結果。(8,6,3,4,2,9,7,5,1,0)十二、算法設計(共25分)1.表L中插入數(shù)據元素e,插入后保持L仍是非遞減有序。假設:LocateElem(ListL,ElemTypee,compare())是在線性表L中查找第一個與e滿足關系compare()的數(shù)據元素的位序。若元素不存在,返回值為0.利用線性表的基本操作實現(xiàn)函數(shù)InsertInOrder(List&L,ElemTypee),其功能是在非遞減有序●●StatusListInsert(List&L,ElemType)是在線性表L中第i位之前插入新的數(shù)據元素e,L的長度加1.●ListLength(L)是返回線性表L中元素的個數(shù)?!馭tatusGre

溫馨提示

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

評論

0/150

提交評論