码迷,mamicode.com
首页 > 编程语言 > 详细

【十一】找出一组数组中最大值、最大值的角标、最小值、最小值的角标及平均数

时间:2017-11-11 16:50:54      阅读:365      评论:0      收藏:0      [点我收藏+]

标签:div   log   注意   数据   ret   php   代码   func   html   

需求:现有一组评委打分的数据。

  1. 求出他们的最大值与最小值。
  2. 最大值最小值的角标
  3. 去除最大值与最小值后的平均数

代码:

 1 <?php
 2     $arr=array(1,2,3,4);
 3     //最小值
 4     //思路:44,5,3,333,445,99,54,332,-6
 5     // 1.定义变量,一个记录下标$index,一个记录最小值$minvalue
 6     // 2.假如最小值为下标为0的数
 7     // 3.拿认为最小的值与该数组内的数比较
 8     // 4.如果$minvalue大于数组内的某个数,则说明这个数不是最小值。交换下标与最小值
 9     function minfunction($arr){
10         $index=0;
11         $minvalue=$arr[0];
12         for ($i=1; $i <count($arr) ; $i++) { 
13             if ($minvalue>$arr[$i]) {
14                 $index=$i;
15                 $minvalue=$arr[$i];
16             }
17         }
18         return $index;
19     }
20     $a=minfunction($arr);
21     // echo $a;
22     echo "最小值为$a,他的分数为$arr[$a]";
23     echo "<br/>";
24     //最大值
25     // 思路:与最小值思路一样
26     function maxfunction($arr){
27     $index=0;
28     $minvalue=$arr[0];
29     for ($i=1; $i <count($arr) ; $i++) { 
30         if ($minvalue<$arr[$i]) {
31             $index=$i;
32             $minvalue=$arr[$i];
33         }
34     }
35     return $index;
36 }
37     $b=maxfunction($arr);
38     // echo $a;
39     echo "最大值为$b,他的分数为$arr[$b]";
40     echo "<br/>";
41     // 平均数
42     // 思路:
43     //定义一个变量记录总分数
44     // 2.将除最大值与最小值以外的值相加
45     // 3.除以count($arr)-2就得到平均值了
46     $sum=0;
47     for ($i=0; $i <count($arr) ; $i++) { 
48         // echo $a."===".$b."---".$i."<br/>";
49         // $c=($i!=$a) && ($i!=$b);
50         // var_dump($c);
51         //注意:以下条件&&的意思两者都为真,才执行如下语句
52         if (($i!=$a) && ($i!=$b)) {            
53             $sum+=$arr[$i];
54             // echo $sum."<br/>";
55         }
56     }
57     echo "除去最大值与最小值的总分为$sum"."<br/>";
58     echo "平均数为".$sum/(count($arr)-2);
59     echo "<br/>";
60 ?> 

结果:

技术分享

在做题过程中遇到的错点:

  • 第52行值的比较,写成了($arr[$i]!=$arr[$a]) && ($arr[$i]!=$arr[$b]),当然这样执行结果也是对的。对下标进行比较更方便快捷
  • 第52行运算符,写成了||。之后一直在纠结怎么4个数他都算进去了。= =(沉默一阵)。原来是运算符用错了。必须两个都为真,才叠加sum的值

 总结:

  1. 求最大值与最小值,使用循环遍历排序(排序方法:冒泡排序、选择排序、快递排序)
  2. 运算符:&&、and(都为true) 、or ||(任一为true) 。详情参照http://www.cnblogs.com/8013-cmf/p/7722966.html

【十一】找出一组数组中最大值、最大值的角标、最小值、最小值的角标及平均数

标签:div   log   注意   数据   ret   php   代码   func   html   

原文地址:http://www.cnblogs.com/8013-cmf/p/7819272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!