




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计实习报告目 录一、程序分析与设计1二、流程图2三、源程序清单6四、调试过程9五、程序有待改进的地方10六、本次实习的收获和建议10附录11一、程序分析与设计1、先用记事本编辑文件stu1.dat存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。2、利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到stu2.dat文件。3.计算各科成绩的分数段时,用到for循环if条件,事先定义各分数段人
2、数变量,并赋值为0.如果符合各分数段符合if条件变量+自增。再用fprintf将分数段的信息写入到stu2.dat文件。4.在屏幕上打印学生的成绩,用printf函数for循环即可打出每个学生的成绩。格式对齐用n换行t制表符。5打印不及格学生的信息,不及格应满足stui.score=90 B均成绩=85且至少一科为100 C均分=85且至少有两科=95 D均分排名前三名。满足着四个条件中的任一个且每门功课及格以上,即为优秀。即可表示为:( 满足A| 满足B | 满足C | 满足D )&( 各科成绩=60 )A即为stui.aver=90 B即为stui.aver=85&(stui.score0
3、=100|stui.score1=100|stui.score2=100)C即为stui.aver=85&( a | b | c )a为英语 C语言都=95 即为(stui.score0=95&stui.score1=95)b为英语 高数都=95 即为(stui.score0=95&stui.score2=95)c为C语言 高数都=95 即为(stui.score1=95&stui.score2=95)D即为 stui.rank=60 即可表示为(stui.score0=60&stui.score1=60&stui.score2=60)用逻辑运算符&及|if else if语句即可实现程序。二
4、、流程图void main() /主函数void duwenjian() /读入文件函数void xiewenjian() /向文件写出函数void gekepingjun() /求各科平均分void pingjunScore() /每学生三门功课平均分void RankStudent() /学生排名void fengshuduan() /各科分数段void Print() /向屏幕打印学生成绩条void printbujige() /向屏幕打印不及格学生信息void printyoudenStudent() / 向屏幕打印优等生信息各个函数流程图如下: 设计思路数函主读入文件各学生平均分各科
5、平均分排名算分数段写文件屏幕上打印学生成绩打印不及格信息打印优等生If else if 语句 菜单程序语句Else ifIf elseI结果运行void main() void duwenjian()主函数 读入文件结束voidxiewenjian() 写文件 void gekepingjun() 求各科平均分函数 void pingjunScore() 三门功课平均分定义变量开始循环 算平均分结束void RankStudent() 学生排名 void fengshuduan() 各分数段人数 结束结束相比较小排名加1 void printbujige() 打印不及格信息void Print
6、() 打印各科成绩开始 结束结束void printyoudenStudent() 优等生If语句的嵌套三、源程序清单#include#include#define N 15struct student int num;char name20; int score3;float aver;int rank;stuN;int E1=0,E2=0,E3=0,E4=0,E5=0,C1=0,C2=0,C3=0,C4=0,C5=0,M1=0,M2=0,M3=0,M4=0,M5=0;float averEnglish=0,averClanguage=0,averMath=0;void duwenjian(
7、);void xiewenjian();void gekepingjun();void pingjunScore();void RankStudent();void fengshuduan();void Print();void printbujige();void printyoudenStudent();void main() int i;int k;duwenjian();/读入文件pingjunScore();/各学生平均分gekepingjun();/各科平均分 RankStudent();/排名 fengshuduan();/算分数段xiewenjian();/写文件printf(
8、输入1 2 3 n1打印学生成绩 2打印不及格信息 3打印优等生 n);for(k=0;k+) scanf(%d,&i); if(i=1)Print();/屏幕上打印学生成绩 else if(i=2) printbujige();/打印不及格信息 else if(i=3) printyoudenStudent();/打印优等生 else(i!=1&i!=2&i!=3); printf(请输入1 2 3n); void duwenjian() FILE *fp;int i;if(fp=fopen(E:xiaoqiang.txt,r)=NULL) printf(can not open the f
9、ile!n);exit(0);for(i=0;iN;i+)fscanf(fp,%d%s%d%d%d,&stui.num,& ,&stui.score0,&stui.score1,&stui.score2 );fclose(fp);void xiewenjian() FILE *fp; int i;if(fp=fopen(stu1.txt,w)=NULL)printf(can not open the file!n);exit(0);fprintf(fp,学号 姓名 英语 C语言 高数 平均分 名次n);for(i=0;iN;i+)fprintf(fp,%dt%st%dt%dt
10、%dt%5.2ft%dn,stui.num , ,stui.score0,stui.score1,stui.score2,stui.aver,stui.rank ); fprintf(fp,n); fprintf(fp,分数段t英语tC语言t高数n);fprintf(fp,=90t%dt%dt%dn,E5,C5,M5);fprintf(fp,平均分 %5.3ft%5.3ft%5.3ft,averEnglish,averClanguage,averMath);fclose(fp);void pingjunScore() int i;for(i=0;iN;i+)stui.aver
11、=(stui.score0+stui.score1+stui.score2)/3.0 ;void gekepingjun() int i;for(i=0;iN;i+) averEnglish=stui.score0+averEnglish; averClanguage=stui.score1+averClanguage; averMath=stui.score2+averMath;averEnglish=averEnglish/N; averClanguage=averClanguage/N;averMath=averMath/N;void fengshuduan() int i;for(i=
12、0;iN;i+) if(stui.score060) E1+;if(stui.score0=60) E2+;if(stui.score0=70) E3+; if(stui.score0=80) E4+; if(stui.score0=90) E5+; if(stui.score160) C1+; if(stui.score1=60) C2+; if(stui.score1=70) C3+; if(stui.score1=80) C4+; if(stui.score1=90) C5+; if(stui.score260) M1+; if(stui.score2=60) M2+; if(stui.
13、score2=70) M3+; if(stui.score2=80) M4+; if(stui.score2=90) M5+;void RankStudent() int i,j; for(i=0;iN;i+)stui.rank=1;for(j=0;jN;j+)if(stui.averstuj.aver)stui.rank+;void Print() int i;printf(每名学生的成绩:nn);for(i=0;iN;i+)printf(学号%dt姓名 %st英语 %d tC语言 %d t高数 %dn,stui.num,,stui.score0,stui.score1,s
14、tui.score2);void printbujige()int i;printf(n不及格学生:n);for(i=0;iN;i+) if(stui.score060|stui.score160|stui.score260 )printf(学号%dt姓名 %st不及格课程及成绩: ,stui.num,); if(stui.score060)printf( 英语%dt,stui.score0);if(stui.score160)printf(C语言%dt,stui.score1);if(stui.score260)printf( 高数%dt,stui.score2);prin
15、tf(n);void printyoudenStudent()int i;printf(n优秀学生的名单n);for(i=0;i=90)|(stui.aver=85)&(stui.score0=100|stui.score1=100|stui.score2=100)&(stui.score0=60&stui.score1=60&stui.score2=60)printf(学号%dt姓名 %st英语%dtC语言%d 高数%dt 平均分%5.2ft名次%dn,stui.num,,stui.score0,stui.score1,stui.score2,stui.aver,stui.
16、rank);else if(stui.rank=60&stui.score1=60&stui.score2=60)printf(学号%dt姓名 %st英语%dtC语言%d 高数%dt 平均分%5.2ft名次%dn,stui.num,,stui.score0,stui.score1,stui.score2,stui.aver,stui.rank);else if(stui.aver=85)&(stui.score0=95&stui.score1=95)|(stui.score1=95&stui.score2=95)|(stui.score0=95&stui.score2=95)
17、&(stui.score0=60&stui.score1=60&stui.score2=60) printf(学号%dt姓名 %st英语%dtC语言%d 高数%dt 平均分%5.2ft名次%dn,stui.num,,stui.score0,stui.score1,stui.score2,stui.aver,stui.rank);四、调试过程1.在程序运行的过程中,出现了很多的错误。有很复杂的问题,也不乏许多低级的错误。在写入文件的时候,首先我用的是fwrite,而在读入文件的时候用的是fread,后来才发现这两个语句都只是对二进制的文件进行操作,实际上我们要用到的fscanf
18、、fprintf这两个语句。2.在程序运行后开始写出文件结果中出现乱码,原来是原文本文件中添加了汉字的标注,在读入文件程序中fscanf不能识别,故写出乱码。删除汉字符标注后写出的文件即为正确的信息。3.在分数段函数的编写中开始只在该函数中定义了各分数段人数的局部变量,而在后面的fprintf printf函数输出结果时却不能利用该定义的变量。正确的做法是在main函数中定义全局变量,这样才能使其他函数也能利用该定义的变量。4.在编写优等生的函数中,由于优等生要求满足的条件较多。编写的各段代码很乱。后来仔细分析了各个需要满足的条件之间的逻辑关系,利用逻辑关系实现了程序,但仍较为繁琐。在该程序中又出先多重括号不匹配的错误。由于没有弄情if语句的嵌套,在连续用了三个if 和printf语句,结果使有些学生的信息连续打出了几次。在改为else if语句后即得出正确结果。5在程序调试过程中没
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级下学期班主任工作计划
- 供水系统设计类招投标流程
- 苏教版三年级数学上册跨学科教学计划
- 竞争情报网络构建-洞察及研究
- 民办学校一年级下册语文备课组计划
- 冬季混凝土施工养护周期防冻措施
- 康复科脑卒中疼痛及痉挛评估治疗计划
- 小学四年级上册语文课外阅读复习计划
- 译林版小学英语四年级上册课程表调整计划
- 舞台布景设计进度保证措施
- 股东出资情况表模板
- 甘肃省天水市甘谷县第一中学2025届物理高一下期末质量检测试题含解析
- GB/T 4074.5-2024绕组线试验方法第5部分:电性能
- 热水袋烫伤RCA分析2022
- 业主提前装修免责协议
- 2024年上海市计算机一级考试复习题库(含答案)
- 新生儿吸痰护理课件
- 矿井通风工技师(高级技师)理论考试题库
- 《急救知识普及》课件
- 《应急救援知识》课件
- 智慧物业管理方案
评论
0/150
提交评论