ImageVerifierCode 换一换
格式:DOC , 页数:39 ,大小:2.47MB ,
文档编号:5868030      下载积分:20 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5868030.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(2023DOC)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(程序设计与问题求解下实验答案(DOC 39页).doc)为本站会员(2023DOC)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

程序设计与问题求解下实验答案(DOC 39页).doc

1、.实验 数组、结构体和函数综合编程练习1学生成绩统计从键盘输入一个班(全班最多不超过 30 人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:(1)统计不及格人数并打印不及格学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数, 并打印这些学生的名单;(3)统计各分数段的学生人数及所占的百分比。注:将成绩分为六个分数段, 60 分以下为第 0 段,6069 为第 1 段,7079 为第2 段,8089 为第 3 段,9099为第 4 段,100 分为第 5 段。编程要求 :1. 较好的用户输入输出提示信息2. 使用子函数来实现上述各个功能, 并且要使用结构体数组来实现

2、, 该结构体中包括学生学号和成绩3. 最好不要使用全局变量#include #define ARR_SIZE 30typedef struct tagStudentlong num;/学生学号float score;/学生分数Student;int ReadScore(Student stu);int GetFail(Student stu, int n);float GetAver(Student stu, int n);int GetAboveAver(Student stu, int n);void GetDetail(Student stu, int n);main().int n,

3、fail, aboveAver;Student stuARR_SIZE;printf(Please enter num and score until score= 0)i+;scanf(%ld%f, &stui.num, &stui.score);return i;/* 函数功能:统计不及格人数并打印不及格学生名单函数参数:存放学生信息的 Student 结构体数组整型变量 n,存放学生总数函数返回值:不及格人数*/int GetFail(Student stu, int n)int i, count;printf(Fail:nnumber-scoren);count = 0;for (i=

4、0; in; i+)if (stui.score 60)printf(%ld-%.0fn, stui.num, stui.score);count+;return count;/* 函数功能:计算全班平均分函数参数:存放学生信息的 Student 结构体数组整型变量 n,存放学生总数函数返回值:平均分*/float GetAver(Student stu, int n)int i;float sum = 0;for (i=0; in; i+)sum = sum + stui.score;return sum/n;/* 函数功能:统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单函数参数

5、:存放学生信息的 Student 结构体数组整型变量 n,存放学生总数函数返回值:成绩在全班平均分及平均分之上的学生人数*/int GetAboveAver(Student stu, int n)int i, count;float aver;aver = GetAver(stu, n);printf(aver = %fn, aver);printf(Above aver:nnumber-scoren);count = 0;for (i=0; i= aver)printf(%ld-%.0fn, stui.num, stui.score);count+;return count;/* 函数功能:

6、统计各分数段的学生人数及所占的百分比函数参数:存放学生信息的 Student 结构体数组整型变量 n,存放学生总数函数返回值:无*/void GetDetail(Student stu, int n)int i, j, stuLevel6;for (i=0; i6; i+)stuLeveli=0;for (i=0; in; i+)if (stui.score 60)j = 0;elsej = (int)stui.score - 50) / 10;stuLevelj+;for (i=0; i6; i+)if (i = 0)printf( 60 %d %.2f%n, stuLeveli,(floa

7、t)stuLeveli/(float)n*100);else if (i = 5)printf( %d %d %.2f%n, (i+5)*10, stuLeveli,(float)stuLeveli/(float)n*100);elseprintf(%d-%d %d %.2f%n, (i+5)*10,(i+5)*10+9,stuLeveli,(float)stuLeveli/(float)n*100);2成绩排名次某班期末考试科目为数学( MT)、英语(EN)和物理( PH),有最多不超过 30 人参加考试。要求:(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)

8、打印出名次表,表格内包括学生编号、各科分数、总分和平均分;(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数#include #define STU 30typedef struct tagStudentlong num;/ 学号float aver;/ 平均分int sum;/ 总分int math;/ 数学( MT)int english;/ 英语( EN)int physics;/ 物理( PH)Student;void Input(Student stu, int n);void GetSumAver(Student stu,int n);void Sort(Stude

9、nt stu,int n);void Print(Student stu,int n);int Search(Student stu,int n,long x);main()int n, pos;long x;Student stuSTU;printf(Please enter the total number of the students(n=30):);scanf(%d, &n); /* 输入参加考试的学生人数 */printf(Enter No. and score as: MT EN PHn);Input(stu, n); /* 输入学生成绩 */GetSumAver(stu,n);

10、 /* 计算总分和平均分 */printf(Before sort:n);Print(stu,n);Sort(stu,n); /* 排名次 */printf(After sort:n);Print(stu,n);printf(Please enter searching number:);scanf(%ld, &x); /* 以长整型格式输入待查找学生的学号 */pos = Search(stu, n, x); /* 名次查询 */if (pos != -1)printf(position:t NO t MT t EN t PH t SUM t A VERn);printf(%8dt%4ldt

11、%4dt%4dt%4dt%5dt%5.0fn,pos+1,stupos.num, stupos.math,stupos.english,stupos.physics, stupos.sum,stupos.aver);elseprintf(Not found!n);/* 函数功能:输入某班学生期末考试三门课程成绩函数参数: 结构体数组 stu,存放学生信息整型变量 n,存放学生人数函数返回值:无*/void Input(Student stu, int n)int i;for (i=0; in; i+)scanf(%ld, &stui.num);scanf(%d, &stui.math);sca

12、nf(%d, &stui.english);scanf(%d, &stui.physics);/* 函数功能:计算每个学生的总分和平均分函数参数: 结构体数组 stu,存放学生信息整型变量 n,存放学生人数函数返回值:无*/void GetSumAver(Student stu,int n)int i;for (i=0; in; i+)stui.sum = stui.english+stui.math+stui.physics;stui.aver = (float)stui.sum / 3;/* 函数功能:按总分成绩由高到低排出成绩的名次函数参数: 结构体数组 stu,存放学生信息整型变量 n

13、,存放学生人数函数返回值:无*/void Sort(Student stu,int n)int i,j,k;Student tempStu;for (i=0; in-1; i+)k = i;for (j=i+1; j stuk.sum) k = j;if (k != i)tempStu=stui;stui=stuk;stuk=tempStu;/* 函数功能: 打印名次表,表格内包括学生编号、各科分数、总分和平均分函数参数: 结构体数组 stu,存放学生信息整型变量 n,存放学生人数函数返回值:无*/void Print(Student stu,int n)int i;printf( NO t|

14、 MT t EN t PH t SUM t A VERn);printf(-n);for (i=0; in; i+)printf(%ldt| , stui.num);printf(%4dt%4dt%4dt, stui.math,stui.english,stui.physics);printf(%5dt%5.0fn, stui.sum, stui.aver);/* 函数功能:查找学生的学号函数参数: 结构体数组 stu,存放学生信息整型变量 n,存放学生人数长整型变量 x,存放待查找学生的学号函数返回值:找到时,返回学生学号在数组中的下标位置,否则返回值 -1*/int Search(Stud

15、ent stu,int n,long x)int i;for (i=0; in; i+)if (stui.num = x) return(i);return (-1);实验 递归程序设计求游戏人员的年龄4. 求游戏人员的年龄#include int age(int n);int main()int age5;age5=age(5);printf( 第 5 个人的年龄为 %dn,age5);int age(int n)if(n=1)return 10;elsereturn age(n-1)+2;求最大公约数#include int gcd(int x,int y);int main()int x

16、,y;int gcdResult;printf( 输入要计算最大公约数的两个数: );scanf(%d%d,&x,&y);gcdResult=gcd(x,y);printf( 最大公约数为 %dn,gcdResult);int gcd(int x,int y)if (x=y)return x;else if (xy)return gcd(x-y,y);else return gcd(x,y-x);/*xy*/实验 链表编程/注:该程序并没有出错控制,假设用户输入都是正常的范围内#include using namespace std;struct Nodeint data;Node *next

17、;void createList(Node *head,int num);int findByNo(Node *head,int num);int findByData(Node *head,int data);void insertData(Node *head,int data,int num);void deleteData(Node *head,int num);void printOut(Node *head);void main()/int a6=21,23,25,27,29,31;int num;int data;Node *head=new Node();cout 请输入 6

18、个结点的值: ;createList(head,6);coutnum;data=findByNo(head,num);cout 查找到的结点的值为 datadata;num=findByData(head,data);cout 查找到的结点的序号为: numendl;coutnum;coutdata;insertData(head,data,num);coutnum;deleteData(head,num);int findByNo(Node *head,int num)int count=0;Node *p=head;while (p-next!=NULL)p=p-next;count+;i

19、f (count=num)return p-data;int findByData(Node *head,int data)Node *p=head;int count=0;while (p-next!=NULL)p=p-next;count+;if (p-data=data)return count;/输入序号 num 和值 data。在序号为 num 的结点后插入 data,并输出该链表void insertData(Node *head,int data,int num)int count=0;Node *p=head;while (p-next!=NULL)p=p-next;count

20、+;if (count=num)Node *q=new Node();q-data=data;q-next=p-next;p-next=q;printOut(head);return;/输入序号 num,删除序号为 num 的结点,并输出该链表void deleteData(Node *head,int num)int count=0;Node *p=head-next;Node *pre=head;while (p!=NULL)count+;if (count=num)/ 删除节点pre-next=p-next;delete p;printOut(head);return;elsepre=p

21、;p=p-next;void printOut(Node *head)Node *p=head-next;while (p!=NULL)printf(%d ,p-data);p=p-next;coutendl;void createList(Node *head,int num)Node *p;Node *q=head;for (int i=0;ip-data;p-next=NULL;q-next=p;q=q-next;实验 结构、链表综合编程注意:下面的代码用到了文件,但是学生编程并不要求使用文件【编写程序】:建立多个班级学生成绩链表,其中,每个结点包含下面这些信息:学号、姓名、成绩要求完成

22、下面的功能:1建立 2 个班学生成绩的无序链表,其中每个班包含 10 个结点数据(输入或从文件中读取每个同学的信息) ,将每个班的成绩链表按成绩高低排序后分别输出该链表;2将 2 个班级学生成绩合并(按成绩高低排序)后输出;3查找学生成绩:通过输入同学的学号,将该同学从链表中找出,并输出该同学信息;如果找不到,则输出“无此学生” 。/class1.txt101 a 56102 b 78103 c 69104 d 26105 e 60106 f 66107 g 70108 h 90109 i 92110 j 99/class2.txt201 aa 26202 bb 55203 cc 78204

23、dd 46205 ee 89206 ff 65207 gg 99208 hh 85209 ii 73210 jj 96代码如下:#include using namespace std;#include struct Nodechar no5;char name6;double perform;Node *next;void printOut(Node *head)Node *p=head-next;while (p!=NULL)coutno name performnext;coutendl;void main()Node *q;Node *p;int i;/读入班级 1,构成链表Node

24、*headClass1=new Node();q=headClass1;ifstream fin1(class1.txt);if (!fin1)cout 文件 1 打开失败! endl;return;for (i=0;ip-nop-namep-perform;p-next=NULL;q-next=p;q=q-next;cout 班级 1 原始数据为: endl;printOut(headClass1);/读入班级 2,构成链表Node *headClass2=new Node();q=headClass2;ifstream fin2(class2.txt);if (!fin2)cout 文件

25、1 打开失败! endl;return;for (i=0;ip-nop-namep-perform;p-next=NULL;q-next=p;q=q-next;cout 班级 2 原始数据为: next;Node *temp=new Node();Node *max;while (q!=NULL)temp-perform=q-perform;max=q;p=q-next;while (p!=NULL)if (p-performtemp-perform)max=p;temp-perform=p-perform;p=p-next;strcpy(temp-no,q-no);strcpy(temp-n

26、ame,q-name);temp-perform=q-perform;strcpy(q-no,max-no);strcpy(q-name,max-name);q-perform=max-perform;strcpy(max-no,temp-no);strcpy(max-name,temp-name);max-perform=temp-perform;q=q-next;delete temp;temp=NULL;cout 班级 1 排序后数据为: next;temp=new Node();while (q!=NULL)temp-perform=q-perform;max=q;p=q-next;w

27、hile (p!=NULL)if (p-performtemp-perform)max=p;temp-perform=p-perform;p=p-next;strcpy(temp-no,q-no);strcpy(temp-name,q-name);temp-perform=q-perform;strcpy(q-no,max-no);strcpy(q-name,max-name);q-perform=max-perform;strcpy(max-no,temp-no);strcpy(max-name,temp-name);max-perform=temp-perform;q=q-next;del

28、ete temp;temp=NULL;cout 班级 2 排序后数据为: next;q=headClass2-next;while (p!=NULL & q!=NULL)if (p-performq-perform)h-next=p;p=p-next;(h-next)-next=NULL;h=h-next;elseh-next=q;q=q-next;(h-next)-next=NULL;h=h-next;if (p!=NULL)h-next=p;else if(q!=NULL)h-next=q;headClass1=NULL;headClass2=NULL;/打印合并链表cout 合并后的结果

29、为: endl;printOut(head);/查找学生 -/此时只有 head 合并为有学生的,别的两个链表都是空的了。char no5;coutno;h=head;bool isFind=false;while (h-next!=NULL)h=h-next;if (strcmp(h-no,no)=0)coutno name performendl;isFind=true;break;if (!isFind)cout 无此学生 endl;实验 类与对象/linkedList.h#ifndef LINKEDLIST_H_#define LINKEDLIST_H_#include using n

30、amespace std;struct Nodeint data;Node *next;class LinkedListpublic:LinkedList(void)/ 生成头结点,方便后面的操作head=new Node;head-next=NULL;void readList(int num);/num 表示在初始构造链表时,读入结点的个数int findByNo(int num);int findByData(int data);void insertData(int data,int num);void deleteData(int num);void printOut();priva

31、te:Node *head;#endif/linkedList.cpp#include linkedList.hint LinkedList:findByNo(int num)int count=0;Node *p=head;while (p-next!=NULL)p=p-next;count+;if (count=num)return p-data;return 0;int LinkedList:findByData(int data)Node *p=head;int count=0;while (p-next!=NULL)p=p-next;count+;if (p-data=data)re

32、turn count;return 0;/输入序号 num 和值 data。在序号为 num 的结点后插入 data,并输出该链表void LinkedList:insertData(int data,int num)int count=0;Node *p=head;while (p-next!=NULL)p=p-next;count+;if (count=num)Node *q=new Node();q-data=data;q-next=p-next;p-next=q;printOut();return;/输入序号 num,删除序号为 num 的结点,并输出该链表void LinkedLis

33、t:deleteData(int num)int count=0;Node *p=head-next;Node *pre=head;while (p!=NULL)count+;if (count=num)/ 删除节点pre-next=p-next;delete p;printOut();return;elsepre=p;p=p-next;void LinkedList:printOut()Node *p=head-next;while (p!=NULL)coutdata;p=p-next;coutendl;void LinkedList:readList(int num)Node *p;Nod

34、e *q=head;for (int i=0;ip-data;p-next=NULL;q-next=p;q=q-next;/main.cpp#include using namespace std;#include linkedList.hvoid main()/int a6=21,23,25,27,29,31;int num;int data;LinkedList *pList=new LinkedList();coutreadList(6);coutprintOut();printf( 请输入要查找的结点的序号( 1-6):);cinnum;data=pList-findByNo(num)

35、;cout 查找到的结点的值为 datadata;num=pList-findByData(data);cout 查找到的结点的序号为: numendl;coutnum;coutdata;pList-insertData(data,num);coutnum;pList-deleteData(num);实验 继承与多态/myShape.h#ifndef MYSHAPE_H_#define MYSHAPE_H_#include using namespace std;class shapepublic:virtual void area(void)=0;virtual void showarea(

36、void)=0;protected:double m_area;class circle:public shapepublic:circle(double r)radius=r;void area(void);void showarea(void);protected:double radius;class rectangle:public shapepublic:rectangle(double l=0,double w=0)length=l;width=w;void area(void);void showarea(void);protected:double length;double width;#endif/myShape.cpp#include myShape.hvoid circle:area(void)m_area=3.14*radius*radius;void rectang

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|