西南交通大学信息学院研究生中期筛选C++程序.docx
- 文档编号:9459242
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:60
- 大小:37.93KB
西南交通大学信息学院研究生中期筛选C++程序.docx
《西南交通大学信息学院研究生中期筛选C++程序.docx》由会员分享,可在线阅读,更多相关《西南交通大学信息学院研究生中期筛选C++程序.docx(60页珍藏版)》请在冰点文库上搜索。
西南交通大学信息学院研究生中期筛选C++程序
2007二编写程序或者程序段
2、实现描述超市的类Suppermarket类,记录系统中现有商品(用链表实现),定义:
初始化链表的构造函数
增加商品的函数Append;
删除商品的函数Delete;
查询商品的函数Query,并显示查询结果
其中,商品具有Id,名称Name,价格Price和数量Number等特性。
//商品72
#include
structGoods
{
doubleId;
char*Name;
floatPrice;
intNumber;
Goods*next;
};
classSupermarket
{
public:
Goods*L;
Supermarket();
voidAppend(doubleid,char*name,floatprice,intnumber);
voidDelete(doublei);
Goods*query(doublei)
{
Goods*r;
r=L->next;
while(r)
{
if(r->Id==i)
{
cout<<"GoodsID:
"< cout<<"Name: "< cout<<"Price: "< cout<<"Number: "< returnr; } r=r->next; } cout<<"Nogoodsfound! "< } }; Supermarket: : Supermarket() { L=newGoods; L->next=NULL; } voidSupermarket: : Append(doubleid,char*name,floatprice,intnumber) { Goods*r=L; Goods*p; while(r->next! =NULL) { r=r->next; } p=newGoods; p->Id=id; p->Name=name; p->Price=price; p->Number=number; p->next=NULL;//将添加的商品放在最后面 r->next=p; } voidSupermarket: : Delete(doublei) { Goods*p,*r; p=L;//头指针 r=L->next; while(r! =NULL) { if(r->Id==i)break; p=r;r=r->next; } if(r==NULL) { cout<<"goodsdonitexits"< } p->next=r->next;//删除了商品 deleter; } voidmain() { Supermarkets; s.Append(1,"apple",5.7,10); s.Append(2,"meat",9.8,5); s.Append(3,"milk",2.7,8); s.query (1); s.query (2); s.query(3); s.Delete (1); s.query (2); } 运行结果: GoodsID: 1 Name: apple Price: 5.7 Number: 10 GoodsID: 2 Name: meat Price: 9.8 Number: 5 GoodsID: 3 Name: milk Price: 2.7 Number: 8 GoodsID: 2 Name: meat Price: 9.8 Number: 5 Pressanykeytocontinue 06二、2 假定居民的基本数据包括身份证号,姓名,性别和出生日期,而居民中的成年人又多出两项数据: 最高学历和职业,成年中的党员又多出一项数据: 党派类别,现要求建立三个类,让成年人继承居民类,党员类继承成年人类,并要求每个类中都提供有数据添加,数据删除,数据输出的功能。 //商品72 #include classPerson { public: Person(){} Person(char*id,char*name,charsex,char*birthday) { Id=id; Name=name; Sex=sex; Birthday=birthday; } voidAdd(char*id,char*name,charsex,char*birthday) { Id=id; Name=name; Sex=sex; Birthday=birthday; } voidDelete() { Id=""; Name=""; Sex='\0'; Birthday=""; } voidShow() { cout<<"Id: "< cout<<"Name: "< cout<<"Sex: "< cout<<"Birthday: "< } private: char*Id; char*Name; charSex; char*Birthday; }; classAdult: publicPerson { public: Adult(){} Adult(char*id,char*name,charsex,char*birthday,char*edu,char*Occ): Person(id,name,sex,birthday) { Education=edu; Occupation=Occ; } voidAdd(char*id,char*name,charsex,char*Birthday,char*edu,char*Occ) { Person: : Add(id,name,sex,Birthday); Education=edu; Occupation=Occ; } voidDelete() { Person: : Delete(); Education=""; Occupation=""; } voidShow() { Person: : Show(); cout<<"Education: "< cout<<"Occupation: "< } private: char*Education; char*Occupation; }; classPartyMember: publicAdult { public: PartyMember(){} PartyMember(char*id,char*name,charsex,char*Birthday,char*Edu,char*Occ,char*cate): Adult(id,name,sex,Birthday,Edu,Occ) { category=cate; } voidAdd(char*id,char*name,charsex,char*Birthday,char*cate) { Person: : Add(id,name,sex,Birthday); category=cate; } voidDelete() { Person: : Delete(); category=""; } voidShow() { Person: : Show(); cout<<"Category: "< } private: char*category; }; voidmain() { Personp1; Adulta1; PartyMemberpm1; p1.Add("11041062","Liming",'m',"19881112"); p1.Show(); p1.Delete(); p1.Show(); cout< a1.Add("11041063","Liyan",'f',"19881002","graduate","monitor"); a1.Show(); a1.Delete(); a1.Show(); cout< pm1.Add("11041063","Liyan",'f',"19881002","Party"); pm1.Show(); pm1.Delete(); pm1.Show(); cout< } 运行结果: 2005二 1、 编写一个函数,求集合的并集运算,假设两个集合A和B是递增有序的线性链表LA和LB 结果链表用LA表示,LB没有保存的必要*/ typedefstructNode { intdata; structNode*next; }Node; voidu_add(Node*LA,Node*LB) { Node*temp,*temp1,*head,*p; p=head->next; while(p) { if(LB->data { head=LB->next; temp->next=LA; temp1->next=LB; LB->next=temp->next; } elseif(LB->data==LA->data) { head=LB->next; } else { temp1=LA; LA=LA->next; } LB=head; } } 2、定义一个串类,在串上的操作包括: 判断串是否为空; 求串长; 删除串中从i开始的第k个字符; 将串中小写变大写; 将串中大写变小写; #include #include #include classsstring { public: sstring(){s=NULL;} boolisempty() { if((*s)! ='\0') { cout<<"ThisStringisnotempty."< returntrue; } } intlength();//求长度 voiddel_k(inti,intk);//删除串中从i开始的第k个字符 voidupper();//小写变大写 voidlower();//大写变小写 char*s; }; intsstring: : length() { intn=0; char*temp=s; while((*temp)! ='\0'){ n++; temp++; } returnn; cout<<"Thelengthofthisstringis"< } voidsstring: : del_k(inti,intk) { intj; intleg=length(); for(j=i+k;j s[j-k]=s[j]; cout<<"ThenewStringis"< } voidsstring: : lower()//大写变成小写 { char*temp=s; intleg=length(); for(inti=0;i { if(*temp>='A'&&*temp<='Z') { (*temp)+=32; } temp++; } cout<<"ThenewStringis"< } voidsstring: : upper()//大写变成小写 { char*temp=s; intleg=length(); for(inti=0;i { if(*temp>='a'&&*temp<='z') { (*temp)-=32; } temp++; } cout<<"ThenewStringis"< } intmain() { sstringr; charstr[]="asdsaksKKDJHJ"; printf("%s\n",str); r.s=str; r.isempty(); r.length(); r.del_k(2,2); r.lower(); r.upper(); } 运行结果: asdsaksKKDJHJ ThisStringisnotempty. ThenewStringisasaksKKDJHJHJ ThenewStringisasakskkdjhjhj ThenewStringisASAKSKKDJHJHJ Pressanykeytocontinue 3、定义一个栈类,与栈有关的操作包括: 栈初始化; 判栈空; 出栈操作; 入栈操作; 取栈元素; 假定栈元素为整型。 注: 栈的实现可以采用顺序结构,也可以采用链表结构,要求接口与存储结构无关。 方法一、用链表实现 #include typedefinttype; structStackNode{ typeelement; StackNode*previous; StackNode*next; }; classStack { public: enum{MaxStack=5}; Stack() { head=newStackNode; head->element=0; head->previous=NULL; head->next=NULL; top=head; } voidpush(typen) { if(isFull()){errMsg("***TheStackisFull! ***");return;} StackNode*p; p=top; top=newStackNode; p->next=top; top->element=n; top->previous=p; top->next=NULL; } typepop() { if(isEmpty()){errMsg("***TheStackisEmpty! ***");returndummy_val;} typen; StackNode*p; p=top; n=p->element; top=p->previous; deletep; returnn; } boolisEmpty(){returntop==head;} boolisFull(){returnhead->element>MaxStack;} voidprtypeStack() { if(isEmpty()){errMsg("***TheStackisEmpty! ***");return;} StackNode*p; p=top; cout<<"Stackcontents,toptobutton"; while(p! =head) {cout<<'\n'< p=p->previous; } } private: voiderrMsg(char*msg){cout< StackNode*head; StackNode*top; typedummy_val; }; voidmain() { Stacks; typea,b; cout<<"Pleaseinputatwointnumber.\n"; cin>>a>>b; s.push(a); s.push(b); s.prtypeStack(); cout<<"\npop: "< s.prtypeStack(); //system("Pause"); }方法二、采用顺序结构 #ifndefstack_class//如果没定义stack_class, #definestack_class//那么现在开始定义stack_class #include"iostream.h" #include"stdlib.h" constintstack_size=50;//栈中元素最大个数 template classstack{ private: inttop; Tstacklist[stack_size]; public: stack(void); voidpush(constT&item);//入栈 Tpop(void);//出栈 voidclearstack(void);//清栈 Tpeek(void)const;//返回栈顶的元素 intempty(void);//判断栈空 intfull(void);//判断栈满 }; //构造stack函数 template stack : stack(void): top(-1) { } //入栈 template voidstack : push(constT&item) { if(top==stack_size-1) { cout<<"stackoverflow! "< exit (1); } top--; stacklist[top]=item; } //出栈 template Tstack : pop(void) { Ttemp; if(top==-1) { cout<<"栈空了! "< exit (1); } temp=stacklist[top]; top++; returntemp;//返回栈顶元素 } //访问栈顶元素 template Tstack : peek(void)const { if(top==-1) { cout<<"栈空了! "< exit (1); } returnstacklist[top];//返回栈顶元素 } //判断栈空 template intstack : empty(void) { returntop=-1; } //判断栈满 template intstack : full(void) { returntop=stack_size-1; } //清空栈 template voidstack : clearstack(void) { top=-1; } #endifstack_class//结束定义 intmain() { stack return0; } 2003一 1、/*本程序从键盘读入整数,并将按从大到小的顺序输入整数中互不相等的那些整数。 程序一边读入整数,一边构造一个从大到小顺序连接的链表,直至不能从键盘读入 整数,然后顺序输出链表上各表元的整数值。 主函数每读入一个整数,就调用函数Insert, 函数Insert将还未出现在链表上的整数按从大到小的顺序插入到链表中。 为了插入方便,链表在表首有一个辅助接点。 */ #include"stdio.h" #include"stdlib.h" typedefstructnode{intval;structnode*next;}NODE; voidInsert(NODE*list,intx) { NODE*u,*v,*p; inti=0; u=list; v=u->next; while(v&&x { u=v; v=v->next; } if(v==NULL||x>v->val)//位置【2】判断是否要插入新表元 { p=(NODE*)malloc(sizeof(NODE)); p->val=x; p->next=v;//位置【3】 u->next=p;//位置【4】 i++;//i是用来观察函数 } } voidmain() { intx; NODE*head,*p; //首先建立只有辅助节点的空链表 head=(NODE*)malloc(sizeof(NODE)); head->next=NULL;//位置【5】 printf("enterintegers: "); while(scanf("%d",&x)==1) Insert(head,x); for(p=head->next;p;p=p->next) printf("%5d",p->val); printf("\n"); } 2、计算并求出K! 的阶乘。 //计算k的阶乘,因为数字太大,所以按位存储在a数组中,且按倒序存储 #include"stdio.h" #defineMAXN1000 inta[MAXN],b[MAXN]; voidpnext(intk,int*cp) { intc=*cp,i,m,r; for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南交通大学 信息 学院 研究生 中期 筛选 C+ 程序