- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
scanf(″%d″, num); switch(num) {case 1: lookup( ); break; case 2: insert( ); break; case 3: delete( ); break; case 4: modify( ); break; case 5: display( ); break; case 6: qiut(file); break; default: printf(″选择错, 按任一键返回菜单!″); getch( ); } }} void input(file)/*读取词典*/ char file[ ]; {int i; FILLE *fp; char str[STRLEN1]; if((fp=fopen(file, ″r″))==NULL) {printf(″不能打开文件%s!″, file); exit(0); } i=0; fscanf(fp, ″%s″, str); while(! feof(fp)) * 第 14章 C语言程序设计实例 第 14章 C语言程序设计实例 实例一 成绩处理程序 实例二 电子词典程序 实例一 成绩处理程序 1. 问题描述 进行若干个学生、 若干门课程的成绩处理, 要求计算: (1) 每门课程的平均分和方差。 (2) 每个学生的总分、 平均分及方差。 (3) 按总分对学生由高分到低分排序。 2. 数据说明 (1) 学生人数假定不超过1000人, 课程门数假定不超过30门,分别用符号常量N、M描述。 (2) 实际学生人数、实际课程门数分别用整型量n、m描述。 (3) M门课程名称用二维字符数组sname描述。 (4) 学生数据考虑学号num、姓名name、M门课程成绩, 用结构体stt描述。M门课程成绩用一维数组score描述。N个学生数据用结构体数组sta描述。 (5) 每门课程的平均分和方差分别用一维实型数组avs1、 sus1描述。 (6) 每个学生的总分、 平均分及方差分别用一维实型数组total、 avs2和实型量sus2描述。 (7) 排序结果引入一序号数组sort保存。 以上变量定义为全局变量, 同时利用这些变量在函数之间传递数据。 (8) 数据源文件、处理结果文件分别用字符指针变量ps、pt与文件指针变量fps、fpt描述。 (9) 引入中间整型变量i、 j、 k, i用于循环中控制学生, j用于循环中控制课程,k对应总分最高的学生序号。 (10) 数据源文件前面存放学生实际学生人数、 实际课程门数与课程名称;处理结果文件中学生数据增加总分、 平均分及名次,课程的平均分和方差、学生的平均分和方差存放于文件的最后。 3. 算法分析 (1) 整个程序由主控模块main( )、 输入模块input( )、 每门课程的平均分和方差计算模块asfun( )、每个学生的总分平均分及方差计算模块tasfun( )、排序模块sortfun( )、输出模块output( )六个模块组成。各模块之间顺序执行。 (2) 实际学生人数n、实际课程门数m、原始成绩数据由键盘输入或从磁盘数据文件读取。 (3) 原始成绩数据由键盘输入时, 将送磁盘文件SCORE.DAT保存。 (4) 方差计算公式为数据平方和的平均值减去数据平均值的平方。 方差大,表示数据相互之间差别较大;方差小,表示数据相互之间差别较小。 (5) 排序采用选择排序方法, 利用序号数组保存学生名次, 无需交换数据。 (6) 处理结果与原始成绩数据合并后用另一磁盘文件STUDEN.DAT保存。 4. 参考程序 #include ″stdio.h″ #include ″math.h″ #define N 1000 #define M 30 void input( ); void asfun( ); void tasfun( ); void sortfun( ); void output( );
文档评论(0)