学生成绩表单如下:

 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. 前端实现实时通讯-----ajax长连接

    因为web运行模式为请求-响应,服务端无法主动发起通讯,所以通讯实时性存在各种问题,ajax轮询可以模拟及时通讯,但连接太频繁将给服务端带来很大压力,不频繁则实时性很差. 下面介绍在web上真正实现实 ...

  2. python+selenium2(一)

    一.安装python (1)在官网下载python的安装包,这里使用的是python3.5.安装一路下一步,安装路径我的是D:\Python35. (2)在计算机的path变量中添加D:\Python ...

  3. 机器学习与数据科学 基于R的统计学习方法(基础部分)

    1.1 机器学习的分类 监督学习:线性回归或逻辑回归, 非监督学习:是K-均值聚类, 即在数据点集中找出“聚类”. 另一种常用技术叫做主成分分析(PCA) , 用于降维, 算法的评估方法也不尽相同. ...

  4. 管家基因 | Human housekeeping genes

    管家基因就是在细胞里稳定表达的基因,及时在胁迫状态下,表达的差异也不大. 以前做实验的时候就经常听说管家基因,因为在做RT-PCR的时候需要同时检测管家基因,这样可以用于矫正我们不同批次的结果. Li ...

  5. int __get_order(unsigned long size)

    2017-12-6 10:26:504.9.51int __get_order(unsigned long size){    int order; size--;    size >>= ...

  6. 第一阶段——站立会议总结DAY10

    1.昨天做了什么:找到了一些模板,把自己的修改了修改,排版了一下. 2.今天准备做什么:做最后的整理,添加一些小图标一些的.还要把按钮的字体换成红色. 3.遇到的困难:一般定义的文字和下拉菜单的文字的 ...

  7. 根据list集合某个字段进行排序

    import java.util.ArrayList; import java.util.List; class Student { private String name; private doub ...

  8. 解决spring-boot启动异常Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean

    第一种: 需要在主类头加上  @EnableAutoConfiguration 第二种: pom文件是否加了 <dependency> <groupId>org.mybatis ...

  9. PAT 1013 Battle Over Cities

    1013 Battle Over Cities (25 分)   It is vitally important to have all the cities connected by highway ...

  10. Leetcode 1004. 最大连续1的个数 III

    1004. 最大连续1的个数 III  显示英文描述 我的提交返回竞赛   用户通过次数97 用户尝试次数143 通过次数102 提交次数299 题目难度Medium 给定一个由若干 0 和 1 组成 ...