ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:247.37KB ,
资源ID:7445776      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7445776.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课设实习报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课设实习报告.docx

1、C语言课设实习报告C语言课程设计实习报告目 录一、程序分析与设计 1二、流程图 2三、源程序清单 6四、调试过程 9五、程序有待改进的地方 10六、本次实习的收获和建议 10附录 11一、程序分析与设计1、先用记事本编辑文件stu1.dat存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。2、利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到stu2.dat文件。3.计算各科成绩的分数段时,用到for

2、循环if条件,事先定义各分数段人数变量,并赋值为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

3、=85&(stui.score0=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 e

4、lse if语句即可实现程序。二、流程图void main() /主函数void duwenjian() /读入文件函数void xiewenjian() /向文件写出函数void gekepingjun() /求各科平均分void pingjunScore() /每学生三门功课平均分void RankStudent() /学生排名void fengshuduan() /各科分数段void Print() /向屏幕打印学生成绩条void printbujige() /向屏幕打印不及格学生信息void printyoudenStudent() / 向屏幕打印优等生信息各个函数流程图如下: 设计思

5、路void main() void duwenjian()主函数 读入文件voidxiewenjian() 写文件 void gekepingjun() 求各科平均分函数 void pingjunScore() 三门功课平均分 void RankStudent() 学生排名 void fengshuduan() 各分数段人数 void printbujige() 打印不及格信息void Print() 打印各科成绩 void printyoudenStudent() 优等生三、源程序清单#include#include#define N 15struct student int num; ch

6、ar 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 RankStudent();void fengshuduan();void Print();

7、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+) scanf(%d,&i); if(i=1)Print();/屏幕上打印学生成绩 else if(i=2) pri

8、ntbujige();/打印不及格信息 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 file!n); exit(0); for(i=0;iN;i+) fscanf(fp,%d%s%d%d%d,&stui.num,&stui.name ,&stui.score0,&stui.score1,&

9、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%dt%5.2ft%dn,stui.num ,stui.name ,stui.score0,stui.score1,stui.score2,stui.aver,stui.rank );

10、 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=(stui.score0+stui.score1+stui.score2)/3.0 ;void gekepingjun() int i; for(i=0;iN;i+) ave

11、rEnglish=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=0;iN;i+) if(stui.score060) E1+; if(stui.score0=60) E2+; if(stui.score0=70) E3+; if(s

12、tui.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.score2=70) M3+; if(stui.score2=80) M4+; if(stui.score2=90) M5+; void RankStudent()

13、 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.name,stui.score0,stui.score1,stui.score2);void printbujige() int i; printf(n不及格学生:n); for(i=0;iN;i+) if

14、(stui.score060|stui.score160|stui.score260 ) printf(学号%dt姓名 %st不及格课程及成绩: ,stui.num,stui.name); if(stui.score060)printf( 英语%dt,stui.score0); if(stui.score160)printf(C语言%dt,stui.score1); if(stui.score260)printf( 高数%dt,stui.score2); printf(n); void printyoudenStudent()int i;printf(n优秀学生的名单n);for(i=0;i=

15、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.name,stui.score0,stui.score1,stui.score2,stui.aver,stui.rank);else if(stui.rank=60&stui.score1=60&stui.score2=60) printf

16、(学号%dt姓名 %st英语%dtC语言%d 高数%dt 平均分%5.2ft名次%dn,stui.num,stui.name,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)&(stui.score0=60&stui.score1=60&stui.score2=60) printf(学号%dt姓名

17、%st英语%dtC语言%d 高数%dt 平均分%5.2ft名次%dn,stui.num,stui.name,stui.score0,stui.score1,stui.score2,stui.aver,stui.rank);四、调试过程1.在程序运行的过程中,出现了很多的错误。有很复杂的问题,也不乏许多低级的错误。在写入文件的时候,首先我用的是fwrite,而在读入文件的时候用的是fread,后来才发现这两个语句都只是对二进制的文件进行操作,实际上我们要用到的fscanf、fprintf这两个语句。2.在程序运行后开始写出文件结果中出现乱码,原来是原文本文件中添加了汉字的标注,在读入文件程序中f

18、scanf不能识别,故写出乱码。删除汉字符标注后写出的文件即为正确的信息。3.在分数段函数的编写中开始只在该函数中定义了各分数段人数的局部变量,而在后面的fprintf printf函数输出结果时却不能利用该定义的变量。正确的做法是在main函数中定义全局变量,这样才能使其他函数也能利用该定义的变量。4.在编写优等生的函数中,由于优等生要求满足的条件较多。编写的各段代码很乱。后来仔细分析了各个需要满足的条件之间的逻辑关系,利用逻辑关系实现了程序,但仍较为繁琐。在该程序中又出先多重括号不匹配的错误。由于没有弄情if语句的嵌套,在连续用了三个if 和printf语句,结果使有些学生的信息连续打出了

19、几次。在改为else if语句后即得出正确结果。5在程序调试过程中没有利用设置断点的方法,使错误查找较困难。五、程序有待改进的地方1.在程序编写时用了较多if语句的嵌套使程序的可读性降低。2.在编写分数段函数时在main函数中定义了较多的变量,占用了较多的内存空间,应当适当优化。3.程序运行后要求分别打印出三项内容学生成绩,不及格学生,优等生信息可以用switch语句编写一个菜单选项,这样比通过用if语句更显简单。通过在界面上输入相应的字符,让需要打印出信息。六、本次实习的收获和建议1.通过这次实习第一次编写了较多程序,通过函数调用将各个函数模块联系起来,来组成较大的程序,实现其功能。这使我感

20、到结构化编写程序的重要性。只有通过结构化的程序设计将各部分小功能组合起来,才能编写出功能较强的大程序。2.在这次上机调试调试过程中,我学会了用设置断点的方法查找程序中出现的错误,这样使得程序的错误查找更为容易。进一步对VC+的编程环境有所了解,对上机调试有了更深入的认识。3.在编写程序的各段函数中,感到自己对书上的一些内容理解和掌握的不够。对一些长用的语句特点记忆不清,结果使程序的编写较为困难。应加深对课本的理解。4.通过本次实习我感到一个编程者应有认真仔细的态度,只有认真仔细才能查找出程序中的错误,有所提高。附录1、 原始数据xiaoqiang.tst2. 生成文件stu1.tst3、运行结果 输入1按enter键 输入2按enter键输入3按enter键 输入4按enter键

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1