首页 > 试题广场 >

求平均值

[编程题]求平均值
  • 热度指数:23200 时间限制: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
awk 'BEGIN{sum = 0; len = 0}
{
    if (NR == 1) {
        len = $1;
    } else {
        sum += $1;
    }
}
END{printf("%0.3f\n", sum / len)}'

发表于 2021-09-05 11:59:22 回复(0)
更多回答
len=''
i=0
sum=0
while read num; do
    if [ -z "${len}" ]; then
       len=$num
       continue
    fi
    (( sum += num ))

    (( i++ ))
   if [ ${i} -eq $len ]; then
       break
   fi
done
printf "%.3f" $( echo "scale=3; ${sum} / ${len}" | bc )

发表于 2021-07-30 21:49:28 回复(0)
awk '{
    if (NR != 1){
        sum += $1
    }
} END {
    printf("%0.3f\n", sum/(NR-1))
}'

发表于 2021-09-03 21:58:36 回复(0)
awk 'NR==1{all=$0} NR>1{total+=$0} END{printf "%.3f" ,total/all}'
发表于 2020-12-04 18:58:51 回复(1)
read cnt
sum=0
cnt_cp=0
while [ $cnt -gt 0 ]
do
    read num
    let "sum+=num"
    let "cnt--"
    let "cnt_cp++"
done
echo "scale=3;$sum/$cnt_cp" | bc


发表于 2021-01-11 23:54:53 回复(0)
#!/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)

注意精度即可

awk '{ if(NR == 1){N = $0} else{sum+=$0} } END{printf("%.3f", sum/N)}'
发表于 2022-08-27 18:09:45 回复(0)
hm1头像 hm1
cat nowcoder.txt|awk -v b=0 'NR>1{x=$0;b=b+x} END{printf "%.3f",b/(NR-1)}'
发表于 2023-10-11 10:10:53 回复(0)
awk '{
    if(NR == 1) n=$1
    else m+=$1
}END{printf("%.3f",m/n)}'
发表于 2023-09-22 14:40:36 回复(0)
awk -v line=0 -v sum=0 -v arg=0 'NR!=1{sum=sum+$1} NR==1{line=$1} END{printf "%.3f", arg=sum/line}'
发表于 2023-03-14 16:33:45 回复(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){
            tmp+=$1
        }else{
            nm=$1
        }
    };
    END {
        printf "%.3f\n",tmp/nm
    } 
    '

发表于 2023-01-17 16:56:51 回复(0)
awk '{sum+=$1;s=sum-(NR-1)}END{printf "%.3f",s/(NR-1)}'
发表于 2023-01-12 19:27:22 回复(1)
awk '{if(NR>1)sum+=$0}END{printf("%.3f", sum/(NR-1))}' 

发表于 2022-09-23 14:49:28 回复(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)

问题信息

难度:
45条回答 1872浏览

热门推荐

通过挑战的用户

查看代码