程序设计与问题求解下实验答案(DOC 39页).doc
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计与问题求解下实验答案(DOC 39页).doc》由用户(2023DOC)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计与问题求解下实验答案DOC 39页 程序设计 问题 求解 实验 答案 DOC 39
- 资源描述:
-
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
展开阅读全文