C语言程序设计实例.ppt
《C语言程序设计实例.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计实例.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 14章 C语言程序设计实例 第第 14章章 C语言程序设计实例语言程序设计实例 实例一实例一 成绩处理程序成绩处理程序实例二实例二 电子词典程序电子词典程序 第 14章 C语言程序设计实例 实例一实例一 成绩处理程序成绩处理程序 1.问题描述问题描述 进行若干个学生、若干门课程的成绩处理,要求计算:(1)每门课程的平均分和方差。(2)每个学生的总分、平均分及方差。(3)按总分对学生由高分到低分排序。第 14章 C语言程序设计实例 2.数据说明数据说明 (1)学生人数假定不超过1000人,课程门数假定不超过30门,分别用符号常量N、M描述。(2)实际学生人数、实际课程门数分别用整型量n、m描
2、述。(3)M门课程名称用二维字符数组sname描述。(4)学生数据考虑学号num、姓名name、M门课程成绩,用结构体stt描述。M门课程成绩用一维数组score描述。N个学生数据用结构体数组sta描述。第 14章 C语言程序设计实例 (5)每门课程的平均分和方差分别用一维实型数组avs1、sus1描述。(6)每个学生的总分、平均分及方差分别用一维实型数组total、avs2和实型量sus2描述。(7)排序结果引入一序号数组sort保存。以上变量定义为全局变量,同时利用这些变量在函数之间传递数据。(8)数据源文件、处理结果文件分别用字符指针变量ps、pt与文件指针变量fps、fpt描述。第 1
3、4章 C语言程序设计实例 (9)引入中间整型变量i、j、k,i用于循环中控制学生,j用于循环中控制课程,k对应总分最高的学生序号。(10)数据源文件前面存放学生实际学生人数、实际课程门数与课程名称;处理结果文件中学生数据增加总分、平均分及名次,课程的平均分和方差、学生的平均分和方差存放于文件的最后。第 14章 C语言程序设计实例 3.算法分析算法分析 (1)整个程序由主控模块main()、输入模块input()、每门课程的平均分和方差计算模块asfun()、每个学生的总分平均分及方差计算模块tasfun()、排序模块sortfun()、输出模块output()六个模块组成。各模块之间顺序执行。
4、(2)实际学生人数n、实际课程门数m、原始成绩数据由键盘输入或从磁盘数据文件读取。第 14章 C语言程序设计实例 (3)原始成绩数据由键盘输入时,将送磁盘文件SCORE.DAT保存。(4)方差计算公式为数据平方和的平均值减去数据平均值的平方。方差大,表示数据相互之间差别较大;方差小,表示数据相互之间差别较小。(5)排序采用选择排序方法,利用序号数组保存学生名次,无需交换数据。(6)处理结果与原始成绩数据合并后用另一磁盘文件STUDEN.DAT保存。第 14章 C语言程序设计实例 4.参考程序参考程序include stdio.hinclude math.hdefine N 1000define
5、 M 30void input();void asfun();void tasfun();void sortfun();void output();第 14章 C语言程序设计实例 int n,m;struct sttint num;char*name;float scoreM;staN;char snameM16;float avs1M,svs1M;float totalN,avs2N,svs2;int sortN;KH*2D 第 14章 C语言程序设计实例 main()/*主控函数*/clrscr();input();asfun();tasfun();sortfun();output();第
6、 14章 C语言程序设计实例 void input()/*获取数据*/char ch;int i,j;char *ps;FILE*fps;printf(请选择数据源(K-键盘输入 F-磁盘文件读取):n);ch=getch();if(ch=K|ch=k)/*键盘输入*/printf(请输入实际学生人数:);scanf(%d,&n);printf(请输入实际课程门数:);scanf(%d,&m);第 14章 C语言程序设计实例 if(n1000|m30)printf(数据无效!);exit(0);printf(请输入%d门课程名称:,m);for(j=0;jm;j+)scanf(%s,sname
7、j);for(i=0;in;i+)printf(请输入第%d个学生学号,姓名,%d门课程成绩:,i+1,m);scanf(%d%s,&stai.num,stai.name);for(j=0;jm;j+)scanf(%f,&stai.scorej);第 14章 C语言程序设计实例 ps=SCORE.DAT;/*送磁盘文件保存*/if(fps=fopen(ps,wb)=NULL)printf(文件建立错误!);exit(0);fwrite(&n,2,1,fps);fwrite(&m,2,1,fps);fwrite(sname,16,m,fps);fwrite(sta,sizeof(struct s
8、tt),n,fps);fclose(fps);第 14章 C语言程序设计实例 else if(ch=F|ch=f)/*从磁盘文件读取数据*/printf(请输入数据文件名:);scanf(%s,ps);if(fps=fopen(ps,rb)=NULL)printf(文件打开错误!);exit(0);fread(&n,2,1,fps);fread(&m,2,1,fps);fread(sname,16,m,fps);fread(sta,sizeof(struct stt),n,fps);fclose(fps);第 14章 C语言程序设计实例 else printf(数据源选择错误!);exit(0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实例
限制150内