




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言程序设计》实验报告实验序号:8实验项目名称:结构体学号姓名专业、班级实验地点指导教师实验时间一、实验目的及要求1、掌握结构体变量的定义和使用;2、掌握结构体数组的定义和使用;3、了解结构指针的定义和使用二、实验设备(环境)及要求使用VS2010或VisualC++6.0或DEVC++;windows系列操作系统的环境。三、实验内容与步骤1.学生成绩管理:有5个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入5个学生数据,要求打印出每个学生三门课的平均成绩,以及每门课程平均分、最高分学生数据(包括学号、班级、姓名、三门课成绩,平均分)。【实验要求】(1)定义学生结构体。(2)用一个函数实现5个学生数据的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最高的学生数据都在主函数种输出。【实验提示】(1)结构体定义structStudent{intnum;//学号charname[20];//姓名charclassname[20];//班级floatscore[3];//三门课程成绩floataver_score;//平均分}(2)数据组织提示:在主函数中定义一个结构体数组。structStudentstu[20]//定义有20个变量的元素的结构体数组(根据需要确定数组的大小)。(3)结构体数组使用=1\*GB3①循环输入学生信息:=2\*GB3②平均分计算函数,以数组名作参数voidaveragescore(structstudentstu[],intnumber){inti;for(i=0;i<=number;i++){stu[i].aver_score=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0}}=3\*GB3③求平均分最高的学生intmax_averagescore(structstudentstu[],intnumber){intk=0;//查找最高平均分并记录在数组中的下标值for(inti=0;i<=number;i++){………}returnk;//返回最高平均分数组元素的下标}【测试数据】自己设计一组测试数据。运行结果截图:【思考与扩展】如果这样定义结构体typedefstructStudent{intnum;//学号charname[20];//姓名charclassname[20];//班级floatscore[3];//三门课程成绩floataver_score;//平均分}STU,*pSTU;说明如下三条语句的含义:structStudentstu1;定义了一个名为stu1的structStudent类型的变量,存储一个学生的信息。STUstu2;使用typedef定义的STU别名,也定义了一个名为stu2的structStudent类型的变量,存储一个学生的信息。pSTUpstu;定义了一个名为pstu的指针变量,类型是STU*,指向structStudent类型的变量。由于使用typedef定义了STU为structStudent,所以pSTU也指向structStudent类型的变量。2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。运行结果截图:3.定义一个结构体变量(包括年、月、日)。计算某年某月某日是本年中第几天?注意闰年问题。运行结果截图:4.比较两个分数的大小,用结构体实现。运行结果截图:四、分析与讨论对于结构体指针的使用还不熟练。五、教师评语签名:日期:成绩附源程序清单:1.#include<stdio.h>structStudent{intnum;//学号charname[20];//姓名charclassname[20];//班级floatscore[3];//三门课程成绩floataver_score;//平均分};voidinput(structStudent*stu){ printf("请输入学号:"); scanf("%d",&(stu->num)); printf("请输入姓名:"); scanf("%s",&(stu->name)); printf("请输入班级:"); scanf("%s",&(stu->classname)); printf("请输入三门课程的成绩:"); scanf("%f%f%f",&(stu->score[0]),&(stu->score[1]),&(stu->score[2])); stu->aver_score=(stu->score[0]+stu->score[1]+stu->score[2])/3.0;}//输出每个学生的平均分voidprintavg(structStudent*stu){ printf("%s的平均成绩是%.2f\n",stu->name,stu->aver_score);}//求平均分最高的学生intmax_averagescore(structStudent*stu,intnumber){intk=0;floatmaxavg=0;for(inti=0;i<=number;i++){floataver_score=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; if(aver_score>maxavg) { maxavg=aver_score; k=i;}}printf("平均分最高的学生是%s\n",stu[k].name);printf("学号%d\n",stu[k].num);printf("班级%s\n",stu[k].classname);printf("三门课成绩分别是:%.2f%.2f%.2f\n",stu[k].score[0],stu[k].score[1],stu[k].score[2]);printf("平均分为%.2f\n",maxavg);}intmain(){inti; structStudentstu[5]; for(i=0;i<5;i++) { printf("请输入第%d个学生的信息:\n",i+1); input(&stu[i]); printavg(&stu[i]); } max_averagescore(stu,5); return0;}2.#include<stdio.h>structEmployee{charname[20];intyear;floatgongzi;};intmain(){ inti;Employeeemployees[5]= {{"刘一",10,4000.0},{"陈二",39,8000.0},{"张三",15,4500.0},{"李四",31,7000.0},{"王五",29,6500.0},};//输出工资变化之前的所有职工信息printf("工资变化之前的所有职工信息:\n");for(i=0;i<5;i++) {printf("姓名:%s,工作年限:%d年,工资总额:%.2f元\n",employees[i].name,employees[i].year,employees[i].gongzi);}printf("*************************************************");//对工作年限超过30年的职工加100元工资for(i=0;i<5;i++) {if(employees[i].year>30) {employees[i].gongzi+=100.0;}}//输出工资变化之后的所有职工信息printf("\n工资变化之后的所有职工信息:\n");for(i=0;i<5;i++) {printf("姓名:%s,工作年限:%d年,工资总额:%.2f元\n",employees[i].name,employees[i].year,employees[i].gongzi);}return0;}3.#include<stdio.h> structdate { intyear; intmonth; intday; };intmain(){structdatea;printf("请输入年月日:\n");scanf("%d%d%d",&a.year,&a.month,&a.day);intb[12]={31,28,31,30,31,30,31,31,30,31,30,31};intsum,i;sum=a.day; for(i=0;i<a.month-1;i++) sum+=b[i];if(((a.year%4==0&&a.year%100!=0)||a.year%400==0)&&a.month>2)//闰年情况printf("在本年中的第%d天",sum+1);elseprintf("在本年中的第%d天",sum);}4.#include<stdio.h>structfs{ intfz,fm;};intbijiao(structfsf1,structfsf2){ intfz1=f1.fz*f2.fm; intfz2=f2.fz*f1.fm; if(fz1>fz2) { return1; } elseif(fz1<fz2) { return-1; } else { return0; }}intmain(){inta,b,c,d;printf("请输入第一个分数的分子和分母:\n"); scanf("%d%d",&a,&b); printf("请输入第二个分数的分子和分母:\n"); scanf("%d%d",&c,&d); stru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物联网安全保障措施与技术方案手册
- 零售业销售数据分析方法手册
- 电影宣发策略及市场拓展计划
- 浙江国企招聘2024浙江省文化产业投资集团有限公司招聘14人笔试参考题库附带答案详解
- 社会体育专业本科培养方案
- 蚌埠2025年安徽蚌埠五河县事业单位招聘75人笔试历年参考题库附带答案详解
- 烟台2025年山东烟台莱阳市结合事业单位招聘征集本科及以上学历毕业生入伍笔试历年参考题库附带答案详解
- 2022年执业药师考试《药学专业知识(一)》真题及解析
- 2020年二级造价工程师考试《建设工程造价管理基础知识》真题及解析 (浙江省)
- 乙肝病毒表面抗原阳性孕妇母婴阻断效果评价及影响因素分析
- 人教版小学数学四年级下册第一单元测试卷附答案(共9套)
- DL∕T 5210.6-2019 电力建设施工质量验收规程 第6部分:调整试验
- (完整版)形式发票模版(国际件通用)
- 施工二次结构模板技术交底(一)
- 报关实务完整版课件全套ppt最全电子教案整书教案教学设计教学教程
- GM∕T 0036-2014 采用非接触卡的门禁系统密码应用指南
- 胸腔积液.ppt1
- 幼儿园教学活动、一日活动安排表
- 内蒙古高中毕业生学籍表毕业生登记表学年评语表成绩单身体健康检查表完整版高中档案文件
- 部编版四年级道德与法治下册第3课《当冲突发生》优秀课件(含视频)
- 干部调动介绍信(存根)Word版
评论
0/150
提交评论