北京理工大学计算机复试上机题00-12_第1页
北京理工大学计算机复试上机题00-12_第2页
北京理工大学计算机复试上机题00-12_第3页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京理工大学计算机专业研究生复试上机试题(2000-2010)计算机专业研究生复试上机试题2000 年:1、输入任意4个字符(如:abed),并按反序输出(如:deba)#in clude<iostream>#in elude<stri ng>using n amespaee std;void mai n()stri ng s;cin> >s;for(i nt i=3;i>=0;i-)eout<<si;eout<<e ndl;2、 设a、b、e均是 0到9之间的数字,abc、bee是两个三位数,且有: abc+bcc=532。求

2、 满足条件的所有a、b、e的值。#in elude<iostream>using n amespaee std;void mai n()int a,b,e;int s;for(i nt i=100;i<1000;i+)a=i/100;b=i/10-a*10;e=i%10;cout<<i<<""cout<<a*100+b*10+c;if(i+b*100+e*10+e)=532)eout<<a<<" "<<b<<""<<e;e

3、out<<e ndl;3、 一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1,则称其为 完数”若因子之和大于该数,则称其为盈数”求出2到60之间所有 完数”和 盈数”并以如下形式输出:E: el e2 e3(ei为完数)G: g1 g2 g3(gi为盈数)#in elude<iostream>using n amespaee std;void mai n()cout<<"E:"for(i nt i=2;i<=60;i+)int s=0;for(i nt j=1;j<i;j+)if(i%j=0)s=0;s+=

4、j;if(s=i)cout<<i<<""cout<<e ndl;cout<<"G:"for(int k=2;k<=60;k+)int s=0;for(i nt j=1;j<k;j+)if(k%j=0)s+=j;if(s>k)cout<<k<<""cout<<e ndl;4、从键盘输入4个学生的数据(包括姓名、年龄和成绩),并存放在文件sf1上。从该文件 读出这些数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。#in clud

5、e<iostream>#in clude<fstream>#in clude<stri ng>using n amespace std;struct stude ntstri ng n ame;int age;int score;;void mai n()stude nt st4;stude nt s;stude nt t;int i=0;ofstream out("sf1.txt");cout<<"请输入4个学生的姓名,年龄,成绩:"<<endl;for(i=0;i<4;i+)cin&#

6、187;s.n ame»s.age»s.score;out<<s .n ame<<""<<s.age<<" "<<s.score<<e ndl;ifstream in ("sf1.txt");cout<<"name"<<" age "<<"score "<<endl;for(i=0;i<4;i+)in> >sti .n

7、ame»sti.age»sti.score;cout<<sti. name<<" "<<sti.age<<""<<sti.score<<e ndl;for(i=0;i<4;i+)for(i nt j=i+1;j<4;j+)if(sti.score<stj.score)t=sti;sti=stj;stj=t;cout<<"name"<<" age "<<"scor

8、e "<<endl;for(i=0;i<4;i+)cout<<sti. name<<" "<<sti.age<<""<<sti.score<<e ndl;2001 年(1):1、编写程序,计算下列分段函数 y=f(x)的值。y= -x+2.5 0<= x <2 y=2-1.5(x-3)(x-3) 2<= x <4y=x/2-1.5 4<= x <6#in clude<iostream>using n ames

9、pace std;void mai n()int x;cout<<"请输入 x (0-6):"cin»x;if(x<0 && x>=6) cout<<"输入有误!"if(x>=0 && x<2)cout<<"y="<<(-x+2.5)<<e ndl;else if(x>=2 && x<4) cout<<"y="<<2-1.5*(x-3)*(

10、x-3)<<e ndl;else if(x>=4 && x<6) cout<<"y="<<x/2-1.5<<e ndl;2、 编写程序,读入一个整数N。若N为非负数,则计算 N到2N之间的整数和;若 N 为一个负数,则求 2N至U N之间的整数和。#in clude<iostream>#in clude<stdlib.h>using n amespace std;void mai n()int N;cout<<"请输入一个整数:"cin>

11、>N; cout<<(N+2*N)*(abs(N)+1)/2<<e ndl;3、 设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值。#in clude<iostream>using n amespace std;void mai n()for(i nt i=1000;i<=9999;i+)int a,b,c,d;a=i/1000;b=i/100-a*10; c=(i/10)%10;d=i%10;if(9*i=d*1000+c*100+b*10+a)cout<<i<<e ndl; 4、

12、N个人围成一圈顺序编号,从1号开始按1、2、3顺序报数,报3者退出圈外,其余的 人再从1、2、3开始报数,报3的人再退出圈外,依次类推。请按退出顺序输出每个退 出人的原序号。要求使用环行链表编程。#in clude<iostream>#in clude<malloc.h>using n amespace std;typedef struct nodeint num;struct node *n ext;LNode;void mai n()LNode *head,*p,*q;int N;cout<<"输入人数:"cin>>N;p

13、=(LNode*)(malloc(sizeof(LNode);p_>num=1;head=p;for(i nt i=1;i<N;i+)p-> next=(LNode*)(malloc(sizeof(LNode);p=p->n ext;p_>num=i+1;p->n ext=head;p=head;cout<<"输出序列为:"<<e ndl;while(p-> next!=p)q=p->n ext;p=q _>n ext;q_>n ext=p->n ext;cout<<p-&

14、gt;n um<<""delete p;p=q _>n ext;cout<<p->num <<e ndl;delete p;2001 年(2)1、请输入高度h,输入一个高为h, 上底边长为h的等腰梯形(例如h=4,图形如下)*#in clude<iostream>using n amespace std;void mai n()int h;cout<<"请输入 h:"cin> >h;for(i nt i=0;i<h;i+)for(i nt j=O;j<h-i-

15、1;j+)cout<<""for(i nt k=0;k<h+2*i;k+)cout<<"*"cout<<e ndl;2、请编写一个程序,从键盘上输入 n (n的范围是120),求n的阶乘。#in clude<iostream>using n amespace std;void mai n()int n;int sum=1;/int t=0;cout<<"请输入 n (1-20):"cin»n;for(i nt i=1;i<=n ;i+)sum=sum*i

16、;cout<<sum<<e ndl;3、 从键盘上任意输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果。#in clude<iostream>#in clude<stri ng>#i nclude<algorithm>using n amespace std;void mai n()stri ng s;cout<<"E nter stri ng :"cin> >s;sort(s.begi n( ),s.e nd();cout<

17、<s<<e ndl;2002 年(A)1、某人有8角的邮票5张,1元的邮票4张,1元8角的邮票6张,用这些邮票中的一张 或若干张可以得到多少中不同的邮资?#in clude<iostream>using n amespace std;void mai n()int sum=0;for(i nt i=0;i<=5;i+)for(i nt j=0;j<=4;j+)for(i nt k=0;k<=6;k+) sum+;cout<<0.8*i+j+1.8*k<<""cout<<e ndl;cout&

18、lt;<sum<<e ndl;2、输入n值,使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式打印输出图形。例如:当 n=6 时。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1#in clude<iostream>using n amespace std;int fun(int n,int k)/n 为行,k 为列if(k=0 | n=k)return 1;elsereturn fun(n-1,k-1)+fu n(n-1,k);void mai n()int i,j,n;cout<<"请输入 n:

19、"cin»n;for(i=0;i <n ;i+)for(int k=0;k< n-i+1;k+)cout<<""for(j=0;j<=i;j+)cout<<fu n( i,j)<<""cout<<e ndl;2002 年(B)1、 打印所有不超过 n (n<256 )的,其平方具有对称性质的数。如11*11=121。#in clude<iostream>#in clude<stdlib.h>#in clude<stri ng>u

20、sing n amespace std;void mai n()int t,x;char s10;for(i nt i=1;i<256;i+)int j=0;x=i*i;while(x)t=x%10;sj+=t+48;x/=10;sj='0'if(i*i=atoi(s)cout<<i<<""cout<<e ndl;2、 编写一个求菲波那奇数列的递归函数,输入n值,使用该递归函数,输出如下图形。例女口:当 n=6 时。 0 0 1 1 0 1 1 2 3 0 1 1 2 3 5 8 0 1 1 2 3 5 8 13 2

21、1 0 1 1 2 3 5 8 13 21 34 55 #in clude<iostream>using n amespace std;int fun (i nt n)if(n=0)return 0;else if(n=1)return 1;elsereturn fun(n-1)+fu n(n-2);void mai n()int n;cout<<"请输入 n:"cin»n;cout<<""for(i nt i=O;i< n; i+)for(i nt j=0;j<(2* n-1)-(2*i+1);

22、j+)cout<<""for(i nt k=0;k<2*i+1;k+) cout<<fu n(k)<<""cout<<e ndl; 2003 年1、输入球的中心点和球上某一点的坐标,计算球的半径和体积。#in clude<iostream>#in clude<math.h>using n amespace std;double const Pl=3.14156;void mai n()int x1,x2,y1,y2,z1,z2;double r;cout<<&quo

23、t;请输入中心点坐标:";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<<e ndl;cout<<"体积为:"<<4*PI*r*r*r/3<<e ndl;2、手工建立一个文件,文件种每行包

24、括学号、姓名、性别和年龄。每一个属性使用空格分开。文件如下:01李江男21 02刘唐男23 03张军男19 04王娜女19根据输入的学号,查找文件,输出学生的信息。#in clude<iostream>#in clude<fstream>#in clude<stri ng>using n amespace std;struct stude ntint num;stri ng n ame;stri ng sex;int age;void mai n()stude nt t10;stude nt st;stri ng s;int NO;int n;ofstrea

25、m out("stude nt.txt");cout<<"请输入学生人数:"cin»n;cout<<"请输入学生信息:"<<e ndl;for( int i=0;i <n ;i+)cin> >st .num >>st .n ame»st.sex»st.age;out<<st. num<<""<<st. name<<""<<st.sex<

26、<""<<st.age<<e ndl;cout<<"请输入您要查找学生的学号:"cin»NO;cout<<"学号"<<"姓名"<<"性别"<<"年龄"<<endl;ifstream in ("stude nt.txt");for(i nt j=O;j< n;j+)in> >tj. num >>tj. name

27、7;tj.sex>>tj.age;if(tj. num=NO)cout<<tj. num<<""<<tj. name<<""<<tj.sex<<""<<tj.age;cout<<e ndl;真确算法:#in clude<iostream>#in clude<fstream>#in clude<stdlib.h>using n amespace std;int mai n()char str80

28、;int st_no;ifstream file("stude nt.txt");if(!file)cout<<"error!"return 0;cout<<"输入你要查找的学生的学号:"cin> >st_ no;while(!file.eof()file.getli ne(str,80);if(st_ no=atoi(str)cout<<"学号 "<<"姓名 "<<"性别 "<<"

29、年龄"<<endl; cout<<str<<e ndl;return 0;3、输入年月日计算该填是本年的第几天。例如1990年9月20日是1990年的第263天,2000年5月1日是2000年第122天。(闰年:能被 400正除,或能被 4整除但不能被100 整除。每年1、3、5、7、8、10为大月)#in clude<iostream>using n amespace std;int mon th12=31,28,31,30,31,30,31,31,30,31,30,31;void mai n()int y,m,d;int sum=0

30、;cout<<"输人年月曰:"cin»y> >m»d;for(i nt i=1;i<m;i+)sum=sum+m on thi-1;if(m>2 && (y%400=0) | (y%4=0 && y%100!=0)sum=sum+1;sum=sum+d; cout<<y<<"年"<<m<<"月"<<d<<"日"<<"是"<

31、;<y<<"年的第"<<sum<<"天"<<endl;2004 年第一题是建立一个角类,在这个类中重载减号运算符,并实现求出角度的正弦值的函数。#in clude<iostream>#in clude<math.h>using n amespace std;double const PI=3.14159;class an gleint X;public:void xsi n();an gle();an gle(i nt x)X=x;an gle operator- (an gl

32、e c);an gle an gle:operator- (an gle c)retur n an gle(X-c.X);void an gle:xs in()double x=X*PI/180;cout<<"正弦值为:"<<s in (x)<<e ndl;void mai n()angle a(30),b(60),d;a. xsi n();b. xsi n();d=b-a;d.xsi n();第二题是建立一个求一元二次方程解的类(a*xA2+b*x+c=0 ),输入系数a,b,c的值后打印出这个方程的解来,也比较简单。需要注意的是系数

33、a不能为零以及方程有无解,单解还是双 解的情况。#in clude<iostream>#in clude<cmath>using n amespace std;class Rootint a,b,c;public:Root(i nt aa,i nt bb,i nt cc):a(aa),b(bb),c(cc)Root()void result();/void prin t();void Root:result()if(a=0)cout<<"error!"double delta=b*b-4*a*c;if(delta=0)cout<&l

34、t;"单根:"<<"x="<<-b/2*a<<e ndl;else if(delta<0)cout<<"无解! "<<endl;elsecout<<"双跟:"<<"x 仁"<<-b/2*a+sqrt(delta)/2*a<<""<<"x2="<<-b/2*a-sqrt(delta)/2*a<<e ndl;vo

35、id mai n()int aa,bb,cc;cout<<"请输入系数:"cin> >aa»bb»cc;Root x(aa,bb,cc);x.a=aa;x.b=bb;x.c=cc;x.result();第三道题是实现一个多项式的类(a+b*x+c*xA2+d*xA3+.+ ),要求输入该多项式的系数和 x的值后打印出这个多项式的值。 这道题本身并不难,但他要求用好的算法(实际上就是递归)。#in clude<iostream>using n amespace std;int const size=60;int fun(

36、 float nu m,i nt x,i nt n ,i nt N)if(n=0)return numn;elsereturn x*fu n(nu m,x, n-1,N)+nu mN-n;void mai n()int n ,x;float nu msize;cout<<"请输入最高项次数:"cin»n;cout<<"请输入各项系数:"for(i nt i=0;i<=n ;i+)cin»nu mi;cout<<"请输入 x:"cin> >x;cout<&l

37、t;"结果为:"<<fun(nu m,x ,n,n)<<en dl;05年:第一题是给定一个程序,关于字符串的,要求输入并调试,说出此程序的意图。意图是按字母顺序对两个字符串比较排序。第二问要求用尽可能少的语句对该程序进行修改,使其能够对两个字符串比较长度排序。本题满分20。#in clude<iostream>#in clude<stri ng>using n amespace std;void mai n()stri ng str1,str2;cout<<"请输入两个字符串:"cin>

38、 >str1»str2;if(str1.le ngth()>str2.le ngth()cout<<str1<<"is long tha n"< <str2<<e ndl;else if(str1en gth()=str1 .len gth()cout<<str1<<" and "<<str2<<" is equal Ion g"<<e ndl;elsecout<<str2<<&qu

39、ot;is long tha n "<<str1<<e ndl;第二题是要求编写一个日期类,要求按 xxxx-xx-xx的格式输出日期,实现加一天的操作,不考虑闰年问题,所有月份设为 30天。本题黑盒测试时,输入2004年3月20日,得到加一天后时间为2004-3-21,能得一部分分数。输入2004年3月30日,得到加一天后时间为2004-4-1,能得一部分分数。输入2004年12月30日,得到加一天后时间为2005-1-1,且有时间越界处理,能得全部分数。本题满分30。#in clude<iostream>using n amespace std

40、;class Dateint y,m,d;public:Date()Date(i nt year,i nt mon th,i nt day):y(year),m (mon th),d(day)frie nd Date operator+ (Date & t);void display();Date operator+ (Date & t)t.d+;if(t.d>30)t.d=t.d%30;t.m+;if(t.m>12)t.m=t.m%12;t.y+;return t;void Date:display()cout<<y <<"-&q

41、uot;< <m< <"-"< <d<<e ndl;void mai n()int yy,mm,dd;cout<<"请输入日期:"cin»yy>> mm»dd;while(y<0|m<0|m>12|d<0|d>30)cout<<"非法,请重新输入(年 月曰):"cin»y> >m»d;Date t(yy,mm,dd);t+;t.display();第三题要求编写一个复数类

42、,要求有4条。一是有构造函数,能对复数初始化。二是对复数c1, c2, c3.能实现连加运算,令c=c1+c2+c3+.此处可以重载加法操作符。三是有函数实现两个复数相加,并按照a+ib的形式输出。四是能实现对一个复数c=a+ib,定义double x=c有效,使x的值为实部和虚部之和。本题满分50。”#in clude<iostream>using n amespace std;class complexint a,b;public:complex()complex(i nt aa,i nt bb):a(aa),b(bb)complex operator+ (complex c)

43、;void add_c(complex x1);double add();int geta()return a;int getb()return b;complex complex:operator + (complex c)c. a=c.a+a;c.b=c.b+b;return c;void complex:add_c(complex x1)cout<<x1.geta()+a<<"+"<<x1.getb()+b<<"i"<<e ndl;double complex:add()double c=

44、a+b;return c;void mai n()complex a1(1,1),a2(2,2),a3(3,3),a4,a5;a4=a1+a2+a3;a3.add_c(a2);double c=a4.add();cout<<c<<e ndl;2006 年1. 写一个程序判断字符串中数字的位置(不限制使用面向对象编程)例如:输入 a3b4c5输出 2 4 6#in clude<iostream>#in clude<stri ng>#in clude<ctype.h>using n amespace std;void mai n()str

45、i ng s;cout<<"请输入一串字符串:"cin> >s;for(i nt i=0;i<sen gth();i+)if(isdigit(si)cout<<" "<<i+1<<""cout<<e ndl;12345)和其反向变量0的时候停止。并且在2. 写一个类,能接受int型的变量,接收变量后能存储原变量(譬如 (54321),最多处理数量为10个,当输入达到10个或者输入变量为 类销毁前输出存储的所有变量。例如:输入:12345,2234,0输出:1

46、2345543212234 4322有错误算法:#in clude<iostream>#in clude<stri ng>using n amespace std;class Intstri ng s;/stri ng rs;public:In t()In t(stri ng s1)s=s1;stri ng Reverse。;stri ng gets()return s;stri ng In t:Reverse()stri ng rs;for(i nt i=O;i<s.size();i+)rsi=ss.size()-1-i;return rs;void mai n

47、()stri ng str11O;int i=0;"<<e ndl;cout<<"请输入至多十组数字当小于十组时以0结束:while(i<10)stri ng s;cin> >s;str1i=s;if(str1i="0")break;i+;int k=i;for(i=0;i<k;i+)Int a(str1i);cout<<a.gets()<<""<<a.Reverse()<<e ndl;正确算法:#in clude<iostream.

48、h>#in clude<stdlib.h>class Intint num;/int renum;public:In t(i nt n): nu m( n)int reverse();int get nu m()return nu m;int In t:reverse()int r=num;int b=O,a;while( num>0)b*=10;a=n um%10;b+=a;num/=10;num=r;return b;void mai n()int n10;"<<e ndl;cout<<"请输入至多十组数字当小于十组时以0

49、结束:int i=0;while(i<10)cin»n i;if(n i=0)break; i+;int k=i;for(i=0;i<k;i+)Int a(n i);cout<<a.get num()<<""<<a.reverse()<<e ndl;3. 写一个CTriangle类,要求可以接受 CTriangle(y,x)形式的构造,创建在坐标系中的直角三 角形样子如下A| | | BC三点的坐标分别是 A(0,y) B(0,0) C(x,0)实现+运算,并且能够处理键盘连续输入若干个(少于十个)三角形

50、,并且连加(相加时候 三角形边长长度相加,方向同第一个三角形)。输入0后结束并输出最后得出的三角形的三个坐标值。例如:输入:12-1-5输出:A(0,7),B(0,0),C(2,0)#in clude<iostream>using n amespace std;class CTria ngleint y;int兀public:CTria ngle(i nt yy=0,i nt xx=0):y(yy),x(xx)/CTria ngle()void set(i nt ay=0,i nt ax=0)y=ay;x=ax;CTria ngle operator+ (CTria ngle t)

51、;void display();CTria ngle CTria ngle:operator + (CTria ngle t)return CTria ngle(t.y+y,t.x+x);void CTria ngle:display()cout<<"A"<<"(0,"<<y<<"),B(0,0),C("<<x<<",0)"<<e ndl;void mai n()int y1,x1;CTria ngle c10,sum(7,5);c

52、out<<"请输入坐标:"<<e ndl;cin> >y1;for(i nt i=0;y1!=0;i+)cin> >x1;ci.set(y1,x1);cin> >y1;int n=i;sum.set();for(i=0;i< n;i+)sum=sum+ci; sum.display();07年:n次弹地1。一个小球,从高为 H的地方下落,下落弹地之后弹起高度为下落时的 比如第一次弹起高度为 H/2,如此往复,计算从小球 H高度下落到第 往返的总路程。要求:1。用递归的方法实现2。输入H和n,输出结果3。注意程

53、序的健壮性4。可以用C或C+实现#in clude<iostream>#in clude<math.h>using n amespace std;float fun (i nt n)if(n=1)return 1;elsereturn fun(n-1)+1/pow(2, n-2);void mai n()int n;float H;cout<<"请输入高度H与弹地次数n:"cin»H»n;cout<<"返回的总路程为:"cout<<fu n(n 广H<<e ndl

54、;2。创建一个CPoint类,代表平面直角坐标系中的点,创建构造函数和运算符重载函数, 运算符重载为类重载(非友元重载),可以实现计算两个点之间的距离。可以根据需要 加入自己的成员变量或成员函数要求:1。输入两个点的坐标,输出两个点之间的距离2。重载运算符为“-”#in clude<iostream>#in clude<math.h>#i nclude<algorithm>using n amespace std;class CPoi ntint x,y;public:CPoi nt(i nt xx,i nt yy)x=xx;y=yy;float opera

55、tor- (CPo int c);float CPoi nt:operator- (CPoi nt c)return sqrt(x-c.x)*(x-c.x)+(y-c.y)*(y-c.y);void mai n()int x1,x2,y1,y2;cout<<"请输入第一个点的坐标: "cin> >x1»y1;CPoi nt a(x1,y1);cout<<"请输入第二个点的坐标:"cin> >x2»y2;CPoi nt b(x2,y2);cout<<"两个点的距离为:

56、"<<a-b<<endl;3。 创建一个CTriangle类,需要用到第二题中创建的类,即用3点来代表一个三角形, 输入三个点的坐标,实现判断此三角形是不是直角三角形,并输出此三角形的周长。可以根据需要加入自己的成员变量或成员函数要求:1。输入三个点的坐标,输出周长并给出是否直角三角形的信息2。注意程序的健壮性#in clude<iostream>#in clude<math.h>#i nclude<algorithm>using n amespace std;class CPoi ntint x,y;public:CPoi

57、 nt(i nt xx,i nt yy)x=xx;y=yy;float operator- (CPo int c);;float CPoi nt:operator- (CPoi nt c)return sqrt(x-c.x)*(x-c.x)+(y-c.y)*(y-c.y);class ctrian gleCPoi nt A,B,C;float AB,BC,AC;public:ctria ngle(CPoi nt a,CPoi nt b,CPoi nt c):A (a) ,B(b),C(c) AB=A-B;BC=B-C;AC=A-C;void display();bool fun();bool

58、ctria ngle:fu n()float a=AB,b=BC,c=AC,t;if(a>c)t=c;c=a;a=t;if(b>c)t=b;b=c;c=t;if(b*b+a*a-c*c)<10e-6)return true;elsereturn false;void ctrian gle:display()cout<<"直角三角形的周长为:"<<AB+BC+AC<<e ndl;void mai n()int x1,x2,x3,y1,y2,y3;cout<<"请依次输入三个点的坐标: "ci

59、n >>x1>>y1>>x2>>y2>>x3»y3;CPoi nt a(x1,y1),b(x2,y2),c(x3,y3);ctria ngle T(a,b,c);if(T.fu n()display。;elsecout<<"不是直角三角形!"<<endl;4、请自定义一个 Student类,属性包括:Char name10,int num。编程实现学生信息的输入、查询、浏览,其中浏览分为:升序和降序两种。#in clude<iostream>#in clude<s

60、tri ng>#in clude<vector>#in clude<algorithm>/for sort()using n amespace std;int const N=10;class stude ntchar n ame10;int num;public:stude nt() num=0;stude nt()void In foput(char n ame,i nt nu m);void check In fo(char n ame);void prin t();int get nu m()return nu m;void stude nt:l nfop

61、ut(char n ame,i nt num)strcpy(this->n ame ,n ame);this->num=num;void stude nt:check In fo(char n ame)if(strcmp(this->n ame ,n ame)=0) cout<<"Name is: "<<this->n ame<<""<<"Num is: "<<this->num <<e ndl;void stude nt:pri n

62、t()cout< <"n ame is: " <<n ame<<""<<"num is: " <<num <<e ndl;bool cmp(stude nt s1,stude nt s2)retur n sl.get num ()<s2.get nu m();void aceBrowse(vector<stude nt> v_stude nt)for(i nt i=0;i<(i nt)v_stude nt.size();i+)v_stude

63、 nti.pri nt();void desBrowse(vector<stude nt> v_stude nt)for(i nt i=v_stude nt.size()-1;i>=0;i-)v_stude nti.pri nt();void mai n()vector<stude nt> v_stude nt;stude nt stnt;char n ameN;int num;"<<e ndl;cout<<"请按姓名学号的顺序输入学生信息:同时按下ctrl+z结束输入!while(ci n»n ame> >num)stn t. In foput (n ame ,nu m);v_stude nt.push_back(st nt);int i_choice;sort(v_stude nt.beg in(), v_stude nt.e nd(),cmp);cin. clear();cout<<"1升序浏览2降序浏览 3按姓名查询 4退出"<<endl;while(ci n>> i_choice)if(i_choice=1)aceBrowse(v_stude nt);if(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论