C语言课程设计实习报告C语言课程设计实习报告目录一、程序分析与设计.......................................................................................................................1二、流程图.......................................................................................................................................2三、源程序清单...............................................................................................................................6四、调试过程...................................................................................................................................9五、程序有待改进的地方.............................................................................................................10六、本次实习的收获和建议.........................................................................................................10附录................................................................................................................................................11C语言课程设计实习报告1一、程序分析与设计1、先用记事本编辑文件stu1.dat存储一个班学习成绩。然后在C环境下,建立一个学生信息的结构体,用r方式打开上述文件,再用fscanf读入、用printf在屏幕上显示文件内容。2、利用循环使每个学生的三门功课的成绩相加,然后再把和除以三就得到了平均成绩。接着用冒泡法利用平均分的高低排出名次。最后用fprintf将每个学生的信息写入到stu2.dat文件。3.计算各科成绩的分数段时,用到for循环if条件,事先定义各分数段人数变量,并赋值为0.如果符合各分数段符合if条件变量++自增。再用fprintf将分数段的信息写入到stu2.dat文件。4.在屏幕上打印学生的成绩,用printf函数for循环即可打出每个学生的成绩。格式对齐用\n换行\t制表符。5.打印不及格学生的信息,不及格应满足stu[i].score60。Printf打出stu[i].num,stu[i].name即学号,姓名。第二次调用printf分别打出stu[i].score[0],stu[i].score[1],stu[i].score[2]相应的不及格成绩。6.在屏幕上打印优等学生。首先分析优等生需要的条件,有四种并列关系的条件都可。A均成绩=90B均成绩=85且至少一科为100C均分=85且至少有两科=95D均分排名前三名。满足着四个条件中的任一个且每门功课及格以上,即为优秀。即可表示为:(满足A||满足B||满足C||满足D)&&(各科成绩=60)A即为stu[i].aver=90B即为stu[i].aver=85&&(stu[i].score[0]==100||stu[i].score[1]==100||stu[i].score[2]==100)C即为stu[i].aver=85&&(a||b||c)a为英语C语言都=95即为(stu[i].score[0]=95&&stu[i].score[1]=95)b为英语高数都=95即为(stu[i].score[0]=95&&stu[i].score[2]=95)c为C语言高数都=95即为(stu[i].score[1]=95&&stu[i].score[2]=95)D即为stu[i].rank=3各科成绩=60即可表示为(stu[i].score[0]=60&&stu[i].score[1]=60&&stu[i].score[2]=60)用逻辑运算符&&及||ifelseif语句即可实现程序。C语言2二、流程图voidmain()//主函数voidduwenjian()//读入文件函数voidxiewenjian()//向文件写出函数voidgekepingjun()//求各科平均分voidpingjunScore()//每学生三门功课平均分voidRankStudent()//学生排名voidfengshuduan()//各科分数段voidPrint()//向屏幕打印学生成绩条voidprintbujige()//向屏幕打印不及格学生信息voidprintyoudenStudent()//向屏幕打印优等生信息各个函数流程图如下:设计思路数函主读入文件各学生平均分各科平均分排名算分数段写文件屏幕上打印学生成绩打印不及格信息打印优等生Ifelseif语句菜单程序语句ElseifIfelseI结果运行C语言课程设计实习报告3voidmain()voidduwenjian()主函数读入文件voidxiewenjian()写文件voidgekepingjun()求各科平均分函数结束C语言4voidpingjunScore()三门功课平均分voidRankStudent()学生排名voidfengshuduan()各分数段人数定义变量开始循环算平均分结束结束相比较小排名加1结束C语言课程设计实习报告5voidprintbujige()打印不及格信息voidPrint()打印各科成绩voidprintyoudenStudent()优等生开始结束结束If语句的嵌套C语言6三、源程序清单#includestdio.h#includestdlib.h#defineN15structstudent{intnum;charname[20];intscore[3];floataver;intrank;}stu[N];intE1=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;floataverEnglish=0,averClanguage=0,averMath=0;voidduwenjian();voidxiewenjian();voidgekepingjun();voidpingjunScore();voidRankStudent();voidfengshuduan();voidPrint();voidprintbujige();voidprintyoudenStudent();voidmain(){inti;intk;duwenjian();//读入文件pingjunScore();//各学生平均分gekepingjun();//各科平均分RankStudent();//排名fengshuduan();//算分数段xiewenjian();//写文件printf(输入123\n1打印学生成绩2打印不及格信息3打印优等生\n);for(k=0;;k++){scanf(%d,&i);if(i==1)Print();//屏幕上打印学生成绩elseif(i==2)printbujige();//打印不及格信息elseif(i==3)printyoudenStudent();//打印优等生else(i!=1&&i!=2&&i!=3);printf(请输入123\n);}}voidduwenjian(){FILE*fp;inti;C语言课程设计实习报告7if((fp=fopen(E:\\xiaoqiang.txt,r))==NULL){printf(cannotopenthefile!\n);exit(0);}for(i=0;iN;i++){fscanf(fp,%d%s%d%d%d,&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}fclose(fp);}voidxiewenjian(){FILE*fp;inti;if((fp=fopen(stu1.txt,w))==NULL){printf(cannotopenthefile!\n);exit(0);}fprintf(fp,学号姓名英语C语言高数平均分名次\n);for(i=0;iN;i++){fprintf(fp,%d\t%s\t%d\t%d\t%d\t%5.2f\t%d\n,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver,stu[i].rank);}fprintf(fp,\n);fprintf(fp,分数段\t英语\tC语言\t高数\n);fprintf(fp,60\t%d\t%d\t%d\n,E1,C1,M1);fprintf(fp,60~69\t%d\t%d\t%d\n,E2,C2,M2);fprintf(fp,70~79\t%d\t%d\t%d\n,E3,C3,M3);fprintf(fp,80~89\t%d\t%d\t%d\n,E4,C4,M4);fprintf(fp,=90\t%d\t%d\t%d\n,E5,C5,M5);fprintf(fp,平均分%5.3f\t%5.3f\t%5.3f\t,averEnglish,averClanguage,averMath);fclose(fp);}voidpingjunScore(){inti;for(i=0;iN;i++)stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;}voidgekepingjun(){inti;for(i=0;iN;i++){averEnglish=stu[i].score[0]+averEnglish;averClanguage=stu[i].score[1]+averClanguage;averMath=stu[i].score[2]+averMath;}C语言8averEnglish=averEnglish/N;averClanguage=averClanguage/N;averMath=averMath/N;}voidfengshuduan(){inti;for(i=0;iN;i++){if(stu[i].score[0]60)E1++;if(stu[i].score[0]70&&stu[i].score[0]=60)E2++;if(stu[i].score[0]80&&stu[i].score[0]=70)E3++;if(stu[i].score[0]90&&stu[i].score[0]=80)E4++;if(stu[i].score[0]=90)E5++;if(stu[i].score[1]60)C1++;if(stu[i].score[1]70&&stu[i].score[1]=60)C2++;if(stu[i].score[1]80&&stu[i].score[1]