📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 – 5 月 |问题 58(1)

📅  最后修改于: 2023-12-03 15:07:34.911000             🧑  作者: Mango

ISRO CS 2017 – 5月 | 问题58

该问题主要涉及Linux中的shell脚本编程,并要求解决方案使用awk命令。

问题描述

给定一个文本文件input.txt,包含n个整数,每个整数都在1到1000之间。编写一个shell脚本,使用awk命令计算出所有奇数之和、所有偶数之和以及所有数的平均值(保留两位小数),并将结果输出到控制台。

输入格式

文件input.txt中包含n个整数,每行只有一个整数。

例如,若input.txt包含以下内容:

153
312
46
789
276
输出格式

输出包含一行三个数字,分别代表所有奇数之和、所有偶数之和以及所有数的平均值(保留两位小数)。

例如,若input.txt包含以下内容:

153
312
46
789
276

则解决方案应输出以下内容:

942 588 315.60
解决方案
#!/bin/bash

awk '
{
    if ($1%2==0) 
        even+=$1;
    else 
        odd+=$1;
    sum+=$1;
}
END {
    printf("%d %d %.2f",odd,even,sum/NR);
}' input.txt

解决方案中使用了awk命令进行计算,其中:

  • if条件判断用于判断当前数字是奇数还是偶数;
  • oddevensum分别用于累加奇数之和、偶数之和和所有数之和;
  • END部分用于输出相应结果,其中%.2f表示输出浮点数并保留两位小数。
参考文献