内容简介:题目要求:跳水比赛 8个评委打分,运动员的成绩去掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是最后得分,使现(1)请把最高分,最低分的评委找出
题目要求:
跳水比赛 8个评委打分,运动员的成绩去掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是最后得分,使现
(1)请把最高分,最低分的评委找出
(2)找出最佳评委和最差评委。最佳评委是最后得分差距最小,最差评委最后得分差距最大
分析:
设计一个函数求最高分 最低分 平均分 需要考虑存在多个最低分和最高分的情况
找最有裁判和最差裁判使用abs() 以及切片完成 将绝对值传入到切片中再遍历
源代码:
package main //跳水比赛 8个评委打分,运动员的成绩去掉一个最高分,去掉一个最低分,剩下的6个分数的平均分就是最后得分,使现 //请把最高分,最低分的评委找出 //找出最佳评委和最差评委。最佳评委是最后得分差距最小,最差评委最后得分差距最大 //分析: //设计一个函数求最高分 最低分 平均分 需要考虑存在多个最低分和最高分的情况 //找最有裁判和最差裁判使用abs() 以及切片完成 将绝对值传入到切片中再遍历 import ( "fmt" "math" ) func max(array *[8]float64) (mx float64,mi float64,avg float64){ max := 0.0 for i := 0; i < len(array); i++ { if (*array)[i] > max { max = (*array)[i] } } min := max for i := 0; i < len(array); i++ { if (*array)[i] < min { min = (*array)[i] } } mx = max mi = min sum := 0.0 maxcount,mincount :=0.0,0.0 for i := 0; i < len(array); i++ { //判断最大值和最小值出现的次数 1次时直接去掉 多次是需要加上去 if (*array)[i] == max { maxcount +=1 } if (*array)[i] == min{ mincount +=1 } //算出不包含任意一次不包含 最大值、最小值的和 if (*array)[i] != max && (*array)[i] != min{ sum += (*array)[i] } } //fmt.Println(maxcount,mincount) //处理出现多次最大值或者最小值 if mincount > 1.0 && maxcount > 1.0{ sum += (max*(maxcount-1)+min*(mincount-1)) }else if mincount > 1.0 && maxcount == 1.0{ sum += (min*(mincount-1)) }else if mincount ==1.0 && maxcount > 1.0{ sum += (max*(maxcount-1)) }else { sum += 0 } avg = sum/6.0 return mx,min,avg } func Best(array1 *[8]float64, arry2 []float64, avg float64) { for i := 0; i < len(array1); i++ { arry2 = append(arry2, math.Abs((*array1)[i]-avg)) } max := 0.0 for j :=0;j < len(arry2);j++{ if arry2[j] > max{ max = arry2[j] } } min := max for i := 0; i < len(arry2); i++ { if arry2[i] < min { min = arry2[i] } } for i := 0; i < len(arry2); i++ { if arry2[i] == min { fmt.Printf("最优秀评分者为第%v位裁判,评分:%v 和平均分相差%v\n",i+1,(*array1)[i],min) } } for i := 0; i < len(arry2); i++ { if arry2[i] == max { fmt.Printf("评分差距最大者为第%v位裁判,评分:%v和平均分相差%v\n",i+1,(*array1)[i],max) } } } var Socre [8]float64 var Socreabs = make([]float64,0,0) func main() { //输入8个裁判的分数 for i := 0;i<len(Socre);i++{ fmt.Printf("请输入第%v位裁判的的评分:\n",i+1) fmt.Scanln(&Socre[i]) } max,min,avg :=max(&Socre) fmt.Println(Socre) fmt.Printf("最高分为:%v,最低分为:%v 平均分为:%v\n",max,min,avg) //知道最大分 最小分 找最大分、最小分的裁判 for k :=0;k<len(Socre);k++{ if Socre[k] == max{ fmt.Printf("最高分为:%v,第%v位裁判\n",max,k+1) }else if Socre[k] == min { fmt.Printf("最低分:%v,第%v位裁判\n",min,k+1) } } Best(&Socre,Socreabs,avg) }
结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Go数组反转练习
- [Vue 2.x Todo 教程练习参考答案] 标为完成练习参考答案
- [Vue 2.x Todo 教程练习参考答案] 添加todo练习参考答案
- [Vue 2.x Todo 教程练习参考答案] 入门仪式_Hello_Vue练习参考答案
- python二级练习(4)
- python二级练习(6)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Spring in Action
Craig Walls / Manning Publications / 2011-6-29 / USD 49.99
Spring in Action, Third Edition has been completely revised to reflect the latest features, tools, practices Spring offers to java developers. It begins by introducing the core concepts of Spring and......一起来看看 《Spring in Action》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
UNIX 时间戳转换
UNIX 时间戳转换