版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验8 自定义数据类型三、实验思考1有10名学生的数据,每个学生的数据包括学号、姓名、性别、三门课的考试成绩及平均成绩。要求:(1)编写一个input函数,用来输入10个学生的信息。(2)编写一个output函数,用来输出10个学生的信息。(3)计算每个学生的平均成绩,并按平均成绩由小到大进行排序后输出。2设有5个学生和教师的数据。学生的数据包括:姓名、年龄、性别、职业和年级。教师的数据包括:姓名、年龄、性别、职业和职务。现要求输入学生和教师的数据,并输出这些数据,要求当职业项为学生时,输出的最后一项为年级;当职业项为教师时,输出的最后一项为职务。3利用结构体数组和结构体指针,根据从键盘输入的
2、学生姓名,查找已给出数据的结构体数组,若找到该名学生,则输出其所有信息;若找不到该名学生,则输出相应提示信息。4编程实现,从红、黄、蓝、绿四种颜色中任取三种不同的颜色,共有多少种取法,并请输出所有的排列?5从键盘输入一批正整数(以-1作为输入结束标志),按插表尾形式把它们组成一个线性链表。然后,从表头开始,遍历所有结点并输出各结点中的数据。要求线性链表的生成与遍历均写成函数定义。6从键盘输入一系列非负整数,遇0时停止。对于输入的所有偶数和奇数,分别建立一个偶数链表和一个奇数链表,然后输出两个链表中的数据。答案1. #include#includeusing namespace std;cons
3、t int n=2; /设置人数常量n,本例为2人struct student char num6; / 学号 char name8; / 姓名 char sex2; / 性别 int score4; / score1score3存放3门课成绩,score0存放平均成绩stun;void input() /输入函数input int i,j,sum; for(i=0;in;i+) sum=0;coutinput the i+1th students scores:endl; coutstui.num;;coutstui.sex;for(j=0;j3;j+) couts
4、corej+1stui.scorej+1; sum=sum+stui.scorej+1;coutendl;stui.score0=sum/3; void output(student stu) /输出函数output int i,j; coutNO.name sex average score1score2 score3endl; for(i=0;in;i+) coutstui.numsetw(7)setw(7)stui.sexsetw(7); for(j=0;j4;j+) coutsetw(7)stui.scorej ; coutendl; void sort() /排序函
5、数sort int i,j,max; student temp; for(i=0;in-1;i+) max=i; for(j=i+1;jn;j+) if (stumax.score0stuj.score0) max=j; temp=stui; stui=stumax; stumax=temp; void main() input(); output(stu); sort(); coutsort result:endl; output(stu);2. 从题意中可知,学生和教师所包含的数据是不同的,现把数据放在以下表格中。Nam(姓名)Num(学号)Sex(性别)Job(职业)grade(年级)
6、duty(职务)Hu1011ms3li2278ftprof如果job项为st(学生),则第5项为grade(年级),如果job项为te(教师),则第5项为prof(教授)。#include#includeusing namespace std;const int n=2; /定义常量n,本例输入2人信息 struct person char num4; / 号码 char name8; / 姓名 char sex3; / 性别 char job; / 职业 union p /共用体类型 int grade; /年级 char duty8; /职务 category; /共用体变量categor
7、ystten; /结构体数组,n个元素void main() int i; coutenter persons information:no,name,sex,job,grade/dutyendl; for(i=0;sttei.sexsttei.job; if(sttei.job=s) cinsttei.category.grade; /若为学生,则输入所在年级 else if (sttei.job=t) cinsttei.category.duty; /若为教师,则输入其职位 coutendlNO. name sex job grade/dutyend
8、l; for(i=0;in;i+) if(sttei.job=s) coutsttei.numsetw(8)setw(6)sttei.sexsetw(6)etw(10)sttei.category.gradeendl; else coutsttei.numsetw(8)setw(6)sttei.sexsetw(6)etw(10)sttei.category.dutyendl; 3. 学生信息包括学号、姓名、性别。#include#include#includeusing namespace std;const in
9、t n=2; /设置人数常量n,本例为2人struct student char num6; / 学号 char name8; / 姓名 char sex3; / 性别stun;void input() /输入函数input int i,sum; for(i=0;in;i+) sum=0;coutinput the i+1th students information:endl; coutstui.num;;coutstui.sex;coutendl; void main() int i; char stname8; input(); coutstname; for(
10、i=0;in;i+) if (strcmp(stname,)=0 ) coutthe searched information is:endl; coutstui.numsetw(7)setw(7)stui.sexsetw(7); coutendl; break; if (i=n) coutsorry,no information found!endl;4.#include#includeusing namespace std;void main() enum colorred,yellow,blue,green; /声明枚举类型color color te
11、st; /定义枚举类型变量test int i,j,k,n=0,loop; for(i=red;i=green;i+) for(j=red;j=green;j+) if(i!=j) /前两球颜色不同 for(k=red;k=green;k+) if(k!=i)&(k!=j) /前三球颜色不同 n=n+1; coutsetw(3)n; for(loop=1;loop=3;loop+) /对三个球进行处理 switch(loop) case 1: test=color(i);break; /color(i)强制类型转换,将整型i所对应的枚举元素赋给test case 2: test=color(j
12、);break; case 3: test=color(k);break; default:break; switch(test) /判断test的值,输出相应的颜色 case red: coutsetw(8)red;break; case yellow: coutsetw(8)yellow;break; case blue: coutsetw(8)blue;break; case green: coutsetw(8)green;break; default: break; coutendl; couttotal:nendl;5.#include#includeusing namespace
13、std;struct node int data; struct node *next;void creat(node * &head)/建立以head为头指针的链表,head为引用参数,/以使对应的实参为该链表的表头指针 int i;node *last,*p;couti;if(i=-1) head=NULL; return; /置表头指针为空后返回 last=head=NULL; /置表头、表尾指针为空,此时为空链表 p=new node;p-data=i;p-next=last;head=p;last=p;cini;while (i!=-1) p=new node; /产生一个p所指的动
14、态结点 p-data=i; last-next=p; p-next=NULL; last=p; /last 指针指向表尾结点 cini; void traverse (node *head) node *p; p=head; coutthe result is:endl; while(p) coutdatanext; /使p指针移动到下一个结点 coutendl;void main() node *head1=NULL; creat(head1); traverse(head1); 6.#include#includeusing namespace std;struct node int da
15、ta; struct node *next;void creat(node * &head)/建立以head为头指针的链表,head为引用参数,/以使对应的实参为该链表的表头指针 int i;node *last,*p;coutenter non negative integer,0 to end:i;if(i=0) coutThe linked list is empty!data=i;p-next=last;head=p;last=p;cini;while (i!=0) p=new node; /产生一个p所指的动态结点 p-data=i; last-next=p; p-next=NULL
16、; last=p; /last 指针指向表尾结点 cini; return;void cre_oddeven(node * &headodd,node * &headeven) /拆分偶数、奇数链表 node *p1,*p2,*even; if(headodd=NULL) coutThe linked list is empty!next=NULL;headeven=even; while( p1-next!=NULL) /删除链表中的偶数 p2=p1;p1=p1-next; if (p2-data%2=0)& (p2=headodd) ) /将在第一节点中的偶数,插入偶数链中 headodd
17、=p1; even-next=p2;even=p2; else if (p1-data%2=0)/将不在第一节点中的偶数,插入偶数链中p2-next=p1-next;even-next=p1;even=p1;p1=p2;even-next=NULL;if (headodd-data%2=0) headodd=0; headeven=headeven-next; void traverse (node *head) node *p; p=head;if(p=NULL) coutThe linked list is empty!endl; while(p) coutdatanext; /使p指针移动到下一个结点 coutendl;vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能支付安全体系-洞察与解读
- 电力电子变换器-洞察与解读
- 胚发育环境响应-洞察与解读
- 结核病疫苗全球覆盖率-洞察与解读
- 房屋租赁合同范本则解读合同合同三篇
- 2026年体育赛事转播车租赁合同二篇
- 2026年全国水土保持知识培训考试理论及答案
- 2026年秦皇岛职业技术学院单招职业技能测试题库及答案详解1套
- 2026年濮阳职业技术学院单招职业倾向性测试题库及参考答案详解
- 西平县人和乡招聘社区网格员备考题库附答案详解
- 第四章 《金瓶梅》
- 传感器技术与应用-说课
- GB/T 3452.4-2020液压气动用O形橡胶密封圈第4部分:抗挤压环(挡环)
- GB/T 13816-1992焊接接头脉动拉伸疲劳试验方法
- 2022年养老护理员理论考试题库(600题)
- 碳捕集、利用与封存技术课件
- 翰威特-绩效管理理论与操作实务
- 新生儿听力筛查(共29张)课件
- 《消防安全技术实务》课本完整版
- (精心整理)数学史知识点及答案
- 王家岭煤矿初设说明书201204
评论
0/150
提交评论