网站大量收购独家精品文档,联系QQ:2885784924

北京交通大学C语言第6章下研讨.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京交通大学C语言第6章下研讨

* enum { NUM = 200, HISTOHIGH = 60 }; double scores[NUM]; int readscores(int lim, double tb[]); void statistics(int num, double tb[]); void histogram(int num, double tb[], int high); int main(void) { int n = readscores(NUM, scores); statistics(n, scores); histogram(n, scores, HISTOHIGH); return 0; } 程序主体结构 函数原型 * int readscores(int lim, double tb[]) { int i = 0; while(ilim scanf(%lf,tb[i])==1) ++i; return i; } 输入成绩函数 * void statistics(int n, double tb[]) { int i; double s, sum, avr; if (n 2)   { /*项数小于2时的处理*/ printf(Data too few.\n); return; } for (sum = 0.0, i = 0; i n; ++i) sum += tb[i]; avr = sum/n; for (sum = 0.0, i = 0; i n; ++i) sum += (tb[i]-avr)*(tb[i]-avr); s = sqrt(sum/(n-1)); printf(Total students: %d\n, n); printf(Average score: %f\n, avr); printf(Std deviation: %f\n\n, s); } 计算并输出统计值函数 如果需要保留 avr和s? * 直方图生成(用横向的直方图): 每个成绩段输出一组字符,选H作为基本字符。 void prtHH(int n) { int i; for(i = 0; i n; ++i)putchar(H); } 分段长度可用符号常量SEGLEN表示,根据它可算出分段数HISTONUM 。 enum { SEGLEN = 5, HISTONUM = (100/SEGLEN)+1 }; * 分段成绩数统计:用数组统计各分段成绩人数,将数组命名为segs,其中应有HISTONUM个计数器。 处理的是等长分段,存在从成绩得到计数器下标的简便方法。segs[((int)scores[i])/SEGLEN]++; 将成绩强制转到int后除以分段长度得到计数器下标。 下面考虑用如下形式输出直方图行: 80: 23|HHHHHHHHHHHHHH 为使直方图规范化,最长行HISTOHIGH个字符。 * void histogram(int n, double tb[], int high) { int i, mx; int segs[HISTONUM]; if (n == 0) return; for (i = 0; i HISTONUM; ++i) segs[i] = 0; for (i = 0; i n; ++i) /* 统计分段人数 */ segs[(int)tb[i]/SEGLEN]++; for (mx = 1, i = 0; i HISTONUM; ++i) if (segs[i] mx) mx = segs[i]; /*找最大值*/ for (i = 0; i HISTONUM; ++i) { /* 输出 */ printf(%3d: %4d|,(i+1)*SEGLEN,segs[i]); prtHH(segs[i]*high/mx); putchar(\n); } } * 分析和改进 若文件中都是0到100的数值,程序能得到正确结果。出现不法数据呢?如混入一个178,程序会怎么样? 实际软件应正确处理合法输入,还应在输入有错时合理处置。如果编译程序遇到不合法程序就垮台,还可能破坏操作系统,还有人愿意用它吗? 程序抵御不合法数据破坏的能力称为强健性。 修改后的readscores如下 首先需要检查每个输入项,只将合法数据存入数组。 有关数据是否处理完的情况只能在

文档评论(0)

yy558933 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档