学生成绩表单如下:

 Name,Team,First Test, Second Test, Third Test
Tom,Red,,,
Joe,Green,,,
Maria,Blue,,,
Fred,Blue,,,
Carlos,Red,-,,
Phuong,Green,,,
Enrique,Green,,,
Nancy,Red,,,24

编写一个awk脚本用来计算每个人的平均成绩,每次测试的平均成绩和没组队的平均成绩。如果某次成绩为负数,则表示此人错过了测试,那计算平均成绩时排除此人再计算。输出的格式如下,在名字的列表中,名字是10个宽度且左对齐(提示printf中使用%-10s格式),而平均值是7个字符宽度,右边两个右对齐的小数。

 Name       Average
---- -------
Tom 14.67
Joe 13.00
Maria 15.00
Fred 13.33
Carlos 19.50
Phuong 15.67
Enrique 13.00
Nancy 15.00
------------------
Average for Test :
Average for Test : 15.75
Average for Test : 22.125
-------------------
Average for Red Team:
Average for Blue Team: 14.1667
Average for Green Team: 13.8889

脚本如下:

 awk -F, 'BEGIN{
printf "%-10s %s\n","Name","Average"
printf "%-10s %s\n","----","-------"
}
NR>{
sum=
n=
for (i=;i<=;i++){
if ($i>){
n++
sum=sum+$i
testcount[i-]++
testtotal[i-]+=$i
teamcount[$]++
teamtotal[$]+=$i
}
}
printf "%-10s %7.2f\n",$,sum/n
}
END{
print "------------------"
for (j=;j<=;j++){
print "Average for Test "j" : "testtotal[j]/testcount[j]
}
print "-------------------"
for (t in teamcount){
print "Average for "t" Team: "teamtotal[t]/teamcount[t]
}
}' teamlist.txt

解析:

1.awk的BEGIN语句输出表的两个列名。

2.NR>1表示只处理从第二行开始的数据。

3.sum=0,n=0,初始化三个测试总成绩和参加的次数。

4.定义一个for循环,循环处理三次测试数据。

5.判断成绩大于0才处理此次测试。

6.为计算每个人的平均成绩,用变量n记录测试次数,变量sum累计三次的成绩,接着下面用printf格式化输出每个人的平均成绩;为计算三个测试中每次的平均成绩,以i-2作为索引(即i-2次测试),数组testcount记录某次测试参加的人数,数组testtotal记录某次测试的总成绩;为计算每个组的平均成绩,以第二列组名做为索引,数组teamcount记录某组参加测试的人数,数组teamtotal记录某组的总成绩。

7.在END语句中用两个for循环语句分别输出每次测试及每组测试的平均成绩。

  

利用awk处理学生成绩问题(难度较大)的更多相关文章

  1. C语言利用结构体数组实现学生成绩管理系统

    这篇文章主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 要求: 某班有最多不超过30人(具体人数由键盘输入) ...

  2. Java课程设计—学生成绩管理系统(201521123004-林艺如)

    1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...

  3. 基于MFC的学生成绩管理系统的设计与实现

    1.技术介绍MFC是微软基础类库的简称,是微软公司实现的一个C++类库,主要封装了大部分的WINDOWS API函数,并且包含一个应用程序框架,以减少应用程序开发人员工作量.VC++是微软公司开发的C ...

  4. C语言文件实现学生成绩管理

    C语言实现学生成绩管理 项目简介 用C语言的链表及文件操作实现学生成绩的管理,实现主要的添加.修改.删除.查询的主要功能,并在程序关闭时将数据存储在二进制的文件中并加密.下一次打开程序,先解密二进制文 ...

  5. C项目实践--学生成绩管理系统

    1.功能需求分析 学生成绩管理系统是对学生基本信息及成绩的管理.本程序主要实现了对学生的学号.姓名等基本信息以及各项学科成绩进行增加.删除.修改.查询和保存到磁盘文件等操作.主要功能描述如下: (1) ...

  6. R_Studio(学生成绩)对数据缺失值md.pattern()、异常值分析(箱线图)

    我们发现这张Gary.csv表格存在学生成绩不完全的(五十三名学生,三名学生存在成绩不完整.共四个不完整成绩) 79号大学语文.高等数学 96号中国近代史纲要 65号大学体育 (1)NA表示数据集中的 ...

  7. Java学生成绩绩点管理系统

    一.考试要求: 1.按照测试内容要求完成程序的设计与编程: 2.建立学号姓名文件夹,如:“信 1805-1 班 20180001 XXX”,将源程序文件保存在文件夹中,压缩成 rar 文件提交. 3. ...

  8. PTA 学生成绩链表处理(C语言)

    本题要求实现两个函数,一个将输入的学生成绩组织成单向链表:另一个将成绩低于某分数线的学生结点从链表中删除. 函数接口定义: struct stud_node *createlist(); struct ...

  9. Java开学测试-学生成绩管理系统

    题目: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore ...

随机推荐

  1. 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties

    日志log4cxx 封装.实例讲解.配置文件log4cxx.properties 1. 日志作用 程序运行过程中,需要记录程序中的运行状况,方便排查问题,记录数据.可以根据日志的记录快速定位错误发生的 ...

  2. 合并k个排序的列表 Merge k Sorted Lists

    2018-11-25 22:58:52 问题描述: 问题求解: 本题可以使用优先队列高效的进行求解,整体的时间复杂度为O(nlogk). public ListNode mergeKLists(Lis ...

  3. MySql常用函数 --MySql

    1.目标 MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数.格式化函数等.通过这些函数,可以简化用户的操作.例如,字符 ...

  4. 关于Android如何创建空文件夹,以及mkdir和mkdirs的区别

    File().mkdir 和File().mkdirs的区别 mkdir是只能建立一级目录 比如 /sdcard/test/pp 就只能建立test 而mkdirs 则可以全部建立

  5. jquery判断设备是否是手机

    //判断是否是手机 function IsMobile() { var isMobile = { Android: function () { return navigator.userAgent.m ...

  6. android--------自定义控件 之 ViewGroup

    前面几篇讲了自定义控件的组合控件,地址:http://www.cnblogs.com/zhangqie/p/8985612.html 今天这篇博文主要来说说 自定义控件的 ViewGroup. 什么是 ...

  7. wdcp环境安装filephp扩展

    网址 :https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80838424

  8. GPLT L2-004 这是二叉搜索树吗?

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192 类似题目有FBI树 这两个题有个小 ...

  9. 迷宫最短路径问题的dfs,bfs实现

    迷宫的最短路径 给定一个大小为 N×M的迷宫.迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格的通道移动.请求出从起点到终点所需的小步数.请注意,本题假定从起点一定可以移动到终点 限制条件:N,M ...

  10. 突破本地离线存储5M限制的JS库localforage简介

    http://www.zhangxinxu.com/wordpress/2018/06/js-localforage-localstorage-indexdb/