首页 > 试题广场 >

求平均值

[编程题]求平均值
  • 热度指数:23313 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
写一个bash脚本以实现一个需求,求输入的一个数组的平均值

第1行为输入的数组长度N
第2~N行为数组的元素,如以下为:
数组长度为4,数组元素为1 2 9 8
示例:
4
1
2
9
8

那么平均值为:5.000(保留小数点后面3位
你的脚本获取以上输入应当输出:
5.000
示例1

输入

4
1
2
9
8

输出

5.000
#!/bin/bash

#数组长度获取
count=`head -n1 nowcoder.txt`
sum=0
while read line ;do
    let sum+=$line;
done < nowcoder.txt


echo "scale=3;$[sum-count]/$count" | bc

发表于 2023-03-15 04:35:31 回复(0)
#!/bin/bash

sum=0
n=0

while IFS='$\n' read -r line; do
    if [[ $n == 0 ]]
        then n=$(($line))
    else
        temp=$(($line))
        sum=$(($sum+$temp))
    fi
done

printf "%.3f\n" $((1000000000*sum/n))e-9

exit 0

发表于 2023-02-14 03:57:28 回复(0)

注意精度即可

awk '{ if(NR == 1){N = $0} else{sum+=$0} } END{printf("%.3f", sum/N)}'
发表于 2022-08-27 18:09:45 回复(0)
awk '{if(NR>1)sum+=$0}END{printf "%.3f",sum/(NR-1)}' nowcoder.txt
发表于 2022-08-23 20:41:57 回复(0)
xargs|awk '{for(i=2;i<=NF;i++){sum+=$i}}END{printf ("%.3f",sum/$1)}'
发表于 2022-08-17 15:29:08 回复(0)
awk -v i=0 -v j=0 '{
    if(NR>1){
        i=$1+i;
        j=j+1;
    }
}END{printf("%.3f\n",i/j)}' 
发表于 2022-08-16 20:18:38 回复(0)
#!/bin/bash
lineNum=$[$(cat nowcoder.txt | wc -l) - 1]
tail -n $lineNum nowcoder.txt |awk '{sum+=$1;printf("%0.3f\n",sum/NR)}'| tail -n 1
发表于 2022-08-10 00:39:59 回复(0)
sum=0
read longnum
for((i=1;i<=$longnum;i++))
do
        read num
        ((sum+=$num))
done
echo "scale=3;$sum/$longnum"|bc
发表于 2022-06-29 12:02:31 回复(0)
awk '{if(NR==1){num=$1}else{s+=$1}};END{printf("%.3f\n",s/num)}'

发表于 2022-06-26 17:08:00 回复(0)
awk if statement
awk '
NF < 0
{ 
   if (NR > 1)
    s += $1 
}
END {printf "%.3f\n", s / (NR - 1)}
'


发表于 2022-05-13 18:02:40 回复(0)
awk '{if(NR!=1)sum+=$0}END{printf("%.3f",sum/(NR-1))}'

发表于 2022-04-21 21:42:59 回复(0)
#!/bin/bash

read -p "请输入数组长度:" a

result=0
middle=0
Loop=0

while [ $Loop -lt $a ]
do
        read -p "请输入数据:" middle
        result=$((result+middle))
        Loop=$((Loop+1))
done



var3=$(echo "scale=3; $result / $a" | bc)

echo ${var3}

exit 0
发表于 2022-03-27 10:05:33 回复(0)
#!/usr/bin/env bash
awk 'NR==1{a=$0}NR>1{b+=$0}END{printf("%.3f",b/a)}' nowcoder.txt
发表于 2022-03-25 11:23:34 回复(0)
#!/bin/bash
awk '{if(NR!=1)sum+=$0; else num+=$0}END{printf "%.3f\n",sum/num}' nowcoder.txt
发表于 2022-03-03 14:24:20 回复(0)
awk 'NR>1{a+=$0}END{b=a/(NR-1);printf "%.3f",b}'
发表于 2022-03-01 11:31:39 回复(0)
#!/bin/bash
read -t 30  -p "请输入数组的长度和数组的元素": 
array=(${REPLY})
sum=0
for i in  ${array[*]} 
do
    sum=$(($sum+$i))
done
array_length=`echo ${array[0]} + 0|bc`
sum=`echo $sum - $array_length|bc`
echo "scale=3;${sum}/${array_length}"|bc

###
#以上代码在本地测试是可以的,但是在这里不给通过
###
发表于 2022-02-14 21:59:30 回复(0)
awk '{NR==1?len=$1:sum+=$1}END{printf "%.3f",sum/len}' nowcoder.txt
发表于 2021-12-08 16:18:01 回复(0)

问题信息

难度:
23条回答 1877浏览

热门推荐

通过挑战的用户

查看代码