1、C 语言课程设计实习报告 C C 语言课程设计实习报告语言课程设计实习报告 目目 录录 一、程序分析与设计 1 二、流程图 2 三、源程序清单 . 6 四、调试过程. 9 五、程序有待改进的地方 . 10 六、本次实习的收获和建议 10 附录11 C 语言课程设计实习报告 1 一、程序分析与设计一、程序分析与设计 1、先用记事本编辑文件stu1.dat存储一个班学习成绩。然后在C环境下,建立一个学生 信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。 2、 利用循环使每个学生的三门功课的成绩相加, 然后再把和除以三就得到了平均成绩。 接着用冒泡法利用
2、平均分的高低排出名次。最后用fprintf将每个学生的信息写入到stu2.dat文 件。 3.计算各科成绩的分数段时,用到for循环if条件,事先定义各分数段人数变量,并赋值 为0.如果符合各分数段符合if条件变量+自增。再用fprintf将分数段的信息写入到stu2.dat文 件。 4.在屏幕上打印学生的成绩,用printf函数for循环即可打出每个学生的成绩。格式对齐 用n换行t制表符。 5 打印不及格学生的信息, 不及格应满足stui.score=90 B均成绩=85且至少一科为100 C均分=85且至少有两科=95 D均分排名前三 名。满足着四个条件中的任一个且每门功课及格以上,即为优
3、秀。 即可表示为: ( 满足A| 满足B | 满足C | 满足D ) 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(); void xiewenjian(); void gekepingjun(); void pingjunScore(); void R
4、ankStudent(); void fengshuduan(); void Print(); void printbujige(); void printyoudenStudent(); void main() int i;int k; duwenjian();/读入文件 pingjunScore();/各学生平均分 gekepingjun();/各科平均分 RankStudent();/排名 fengshuduan();/算分数段 xiewenjian();/写文件 printf(“输入 1 2 3 n1 打印学生成绩 2 打印不及格信息 3 打印优等生 n“); for(k=0;k+)
5、scanf(“%d“, if(i=1) Print();/屏幕上打印学生成绩 else if(i=2) printbujige();/打印不及格信息 else if(i=3) printyoudenStudent();/打印优等生 else(i!=1 printf(“请输入 1 2 3n“); void duwenjian() FILE *fp; int i; C 语言课程设计实习报告 7 if(fp=fopen(“E:xiaoqiang.txt“,“r“)=NULL) printf(“can not open the file!n“); exit(0); for(i=0;i=90) E5+;
6、 if(stui.score1=90) C5+; if(stui.score2=90) M5+; void RankStudent() int i,j; for(i=0;i=85) else if(stui.rank=60 else if(stui.aver=85) 四、四、调试过程调试过程 1.在程序运行的过程中, 出现了很多的错误。 有很复杂的问题, 也不乏许多低级的错误。 在写入文件的时候,首先我用的是fwrite,而在读入文件的时候用的是fread,后来才发现这 两个语句都只是对二进制的文件进行操作,实际上我们要用到的fscanf、fprintf这两个语句。 2.在程序运行后开始写出文件结果中出现乱码,原来是原文本文件中添加了汉字的标 注,在读入文件程序中fscanf不能识别,故写出乱码。删除汉字符标注后写出的文件即为正 确的信息。 3.在