C语言程序设计-上机实习报告-长江大学

上传人:206****923 文档编号:90315811 上传时间:2019-06-11 格式:DOCX 页数:23 大小:496.98KB
返回 下载 相关 举报
C语言程序设计-上机实习报告-长江大学_第1页
第1页 / 共23页
C语言程序设计-上机实习报告-长江大学_第2页
第2页 / 共23页
C语言程序设计-上机实习报告-长江大学_第3页
第3页 / 共23页
C语言程序设计-上机实习报告-长江大学_第4页
第4页 / 共23页
C语言程序设计-上机实习报告-长江大学_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C语言程序设计-上机实习报告-长江大学》由会员分享,可在线阅读,更多相关《C语言程序设计-上机实习报告-长江大学(23页珍藏版)》请在金锄头文库上搜索。

1、长江大学机械工程学院答辩记录运行情况原始数据成绩排名平均分和分数段统计男女生课程平均分不及格统计优秀生统计优秀学生干部统计破译密码组成大字符回答问题12345计算机上机实习实 习 报 告班 级 装备11003 学 号 201005856 姓 名 郑天伦 指导教师 周志宏老师 完成日期 2011年12月26日 (一)题目的分析设计与说明程序要求说明:1. 用文字处理软件(用记事本写字板wordtc,不能用excel)新建一个文本文件, 将本班M名学生在本学期的N门课程成绩录入到这个文件中,按如下形式存放。要求:学生人数M不少于30人,课程门数N不小于5, 姓名为本班的真实姓名, 课程中必须有一门

2、考查课。2. 录入本班班级学生信息,内容包含“编号 课程名称 课程学分”,录入课程学分情况;读取原始数据文件的内容,计算每个学生的加权平均分 (保留一位小数,4舍5入) ,按平均分排名次,平均分相同则名次相同。创建一个数据文件(建议为:文本文件) ,存放班级的成绩表,按下列式形存放。计算加权平均分的公式如下3. 分别统计全班每门课的平均分。计算各分数段(60;6069;7079;8089;90以上)的学生人数。创建一个数据文件(建议为:文本文件) ,存放上述计算结果。4. 分别统计男生和女生每门课的平均分。结果存放在一个数据文件中;5. 输出所有存在不及格课程学生的名单,包括:学号、姓名、性别

3、、不及格课程名称、课程学分及成绩。结果存放在一个数据文件中。6. 输出优秀学生名单,包括:学号、姓名、性别、名门课成绩、平均分和名次。结果存放在一个数据文件中。优秀学生的条件为:1平均分90 2. 名次在本班前3名3. 平均分85,并且至少有一门课的成绩为95分4平均分85,并且至少有二门课的成绩为90分1平均分85 2. 名次在本班前20%名3平均分80,并且至少有一门课的成绩为95分4平均分80,并且至少有二门课的成绩为90分7. 输出优秀学生干部名单,包括:学号、姓名、性别、职务、名门课成绩、平均分和名次。结果存放在一个数据文件中。优秀学生的条件为:题目的分析思路要点:前期准备:分别建立

4、三个数据文件文件1(原始成绩数据file1.txt)用于存放学生成绩;文件2(学生基本信息file2.txt)用于存放学生的基本信息;文件3(课程及学分设置file3.txt)用于存放N门课程及对应的学分。1)学生成绩管理系统1.(定义三个结构体数组:原始数据file1.txt存放学生成绩;学生基本信息file2.txt;存放学生基本信息;课程及学分file3.txt存放课程及其学分)2.读入原始数据并显示(将其读入另外的“成绩”,“基本信息”,”学分”中);运用数组相关的知识点,对汉字信息采用字符串类型的读入,对数字采用整型数组读入,同时输出相关信息,其中设定不同的指针指向文件,便于使用。3

5、.编写函数用于计算加权平均分及名次。(将其读入另外的”名次表”中);4.编写函数计算全班每门课程的平均分以及不同分数段的人数(将其读入另外的”每门课平均”中);5.编写函数输出男女生课程平均分(将其读入另外的”男女生课程平均分中),运用之前输出的班级同学的平均分的文本,运用循环语句及字符串比较函数等,将性别sex与第一个男生做比较,如果比较结果相同则都为男生,输出成绩,计算男生平均分,女生也相同方式;6.编写函数统计不及格情况,按照条件,按照科目顺序以及同学成绩遴选出不及格的同学,输出其相关的信息。(将其读入另外的”不及格表”中) ;7.编写函数输出优秀学生按照成绩排名输出优秀学生。(将其读入

6、另外的”优秀学生”中);8.编写函数输出优秀学生干部(将其读入另外的”优秀学生干部.txt”中)9.编写菜单,共有8个菜单项,其中7个为题目要求,第8个为退出函数。2)破译密码1.求出100-200之间的素数,作为解码的密匙。2.根据要求编写出对应密匙的解码结果。3.输出解码结果。(二) 程序框图主菜单功能模块图主函数组成大字符(本题不做)学生成绩管理 破译密码一级菜单结构图学生成绩管理系统8. 返回上级菜单7. 输出优秀学生干部名单3. 统计全班每门课程的平均分4. 统计男生和女生每门课平均分2. 计算加权平均分及名次1.读入原始数据并显示菜单 6. 输出优秀学生5. 统计不及格情况破译密码

7、流程图(三)源程序清单解析# includestdio.h# includeconio.h# includestdlib.h#include #include #define M 36 定义一个全局变量M 36 为班级学生的人数1.定义五个结构体类型变量,“学生成绩表”、“学生信息”、“课程与学分设置”、“汇总所有信息”、“平均分”向系统声明这是一个结构体类型,它包括成员列表中不同类型的成员。例如:struct student /学生成绩表 int num; char name30; int score5; char kaocha10; studM; 2.准备读入数据void function

8、1_1() printf(*读入原始数据并显示的程序内容*n); int i; char f115,f215,f315, f415, f515, f615, f715,f815; char m115,m215,m315,m415,m515; char n115,n215,n315;文件读入举例如下:(1)定义文件型数据的指针通过文件指针找到与它关联的文件。例如定义:FILE *fp,*fp1,*fp2;(2)fp文件指向file1对应学生成绩表,打开文件时通知编译系统一下三个信息: 打开文件的名字 使用文件的方式哪一个指针变量指向打开的文件运用如下方式:fp=fopen(G:00file1.t

9、xt,r); /打开文件一,学生成绩表 if(fp=NULL) printf(cannot open the filen); exit(0); fscanf(fp,%s%s%s%s%s%s%s%sn,f1,f2,f3,f4,f5,f6,f7,f8);/运用格式化的方式读取文件内容for(i=0;iM;i+) /设立一个循环要求分别读入每个同学每一科的成绩,包括输出一颗考查课的成绩fscanf(fp,%d%s%d%d%d%d%d%sn,&studi.num,studi.name,&studi.score0,&studi.score1,&studi.score2,&studi.score3,&st

10、udi.score4,studi.kaocha); fclose(fp);文件读取完毕后,关闭文件(3)读取完毕后,显示输出读取的内容 printf(%2s %5s %8s %8s %8s %9s %9s %10sn,f1,f2,f3,f4,f5,f6,f7,f8);先输出表头内容for(i=0;iM;i+)设立循环,输出所有学生的相关信息。printf(%-5d %-8s%6d%8d%10d%10d%10d %10sn,studi.num,studi.name,studi.score0,studi.score1, studi.score2,studi.score3,studi.score4,

11、studi.kaocha); printf(n);可以使用同样方式打开“学生信息”“学分设置”的文件3.计算加权平均分以及学生名次void function1_2() printf(*计算平均分及名次*n); int i,j; float sum1,sum2; FILE *fp,*fp1,*fp2,*fp3; (1)按照上述方式以只读的形式打开“file1.txt”“file2.txt”“file3.txt”,对里面数据进行读取。 (2)设立循环语句,从第一个学生开始,用课程*对应的课程的学分再将得到的值赋给sum1;将总学分的值赋给sum2,用sum1/sum2所得的值就是此同学的加权平均分

12、,接着i+,进行第二个学生的加权平均分统计。 主要程序如下: for(i=0;iM;i+) sum1=0.0; sum2=0.0; for(j=0;j5;j+) sum1=sum1+studi.scorej*stj.xuefen; /*求加权平均分,用(课程*对应学分)/课程学分*/ sum2=sum2+stj.xuefen; stri.average=sum1/sum2; (3)设立名次排名的循环,先将第一个同学的名次定位rank=1,第下一个同学的加权平均分与这一个的同学的进行比较,如果出现他得平均小,则stri.rank=stri.rank+1,如果相等则stri.rank=stri.rank。接着就开始进行第二个同学的比较,同样将第二个学生的名次rank赋值为1,如上进行比较 主要程序如下: for(i=0;iM;i+) stri.rank=1; for(j=0;jM;j+) if(stri.averagestrj.average) stri.rank=stri.rank+1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号