C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 298|回复: 6

去最大值和最小值,求平均值! [复制链接]

Rank: 3Rank: 3

主题
11
帖子
40
C币
180 枚
在线时间
9 小时
发表于 2011-12-3 23:04:46 |显示全部楼层
分享到:
问题描述

用户输入n,按回车以后输入n个整数,每个数都大于等于0且小于等于100。程序在这n个数中去掉一个最大值和最小值,然后求剩下n-2个数的平均值(保留2位小数)。


输入说明

n

n个数


输出说明

其中n-2个数的平均值


输入样例
5
0 1 2 3 4

输出样例
2.00
提示

Rank: 2

主题
0
帖子
32
C币
113 枚
在线时间
8 小时
发表于 2011-12-4 02:47:36 |显示全部楼层
这么简单的还要来求助,自己多写写,多看看书,好好学吧
  1. #include <stdio.h>
  2. main()
  3. {       
  4.         int i,n;
  5.         double s,sum=0.0,ave,max=0,min=100;
  6.         scanf("%d",&n);
  7.         i=n;
  8.         while(i--)
  9.         {
  10.                 scanf("%lf",&s);
  11.                 sum=sum+s;
  12.                 if(max<=s) max=s;
  13.                 if(min>=s) min=s;
  14.         }
  15.         ave=(sum-max-min)/(n-2);
  16.         printf("%lf\n",min);
  17.         printf("%lf\n",max);
  18.         printf("%lf\n",ave);
  19. }
复制代码

Rank: 3Rank: 3

主题
11
帖子
40
C币
180 枚
在线时间
9 小时
发表于 2011-12-4 09:40:34 |显示全部楼层
luchar 发表于 2011-12-4 02:47
这么简单的还要来求助,自己多写写,多看看书,好好学吧

恩恩,想复杂了,我尽然还用了数组,结果写了50几行,谢谢啦

Rank: 3Rank: 3

主题
11
帖子
40
C币
180 枚
在线时间
9 小时
发表于 2011-12-4 16:06:08 |显示全部楼层
#include<stdio.h>
static int b[100];

int Sum(int a[],int n)
{
        int i;
        int sum = 0;

        for(i = 0;i < n;i++)                //sun函数求和;
        {
                sum += a[i];
       
        }
        return sum;
}






int Max(int a[],int n)
{
        int i;

        int max = a[0];

        for(i = 0;i < n;i++)                //Max函数求最大值
        {
                if(a[i] > a[0])
                {
                        max = a[i];
               
                }
        }
        return max;

}


int Min(int a[],int n)
{
        int i;
        int min = a[0];
       
       
        for(i = 0;i < n;i++)                //Min函数求最小值
        {
                if(a[i] < a[0])
                {
                        min = a[i];
                }
               
        }
        return min;

}






int main()
{
        int n;
        int i;
        double ave;

        scanf("%d",&n);

        for(i = 0;i < n;i++)
        {
                scanf("%d",&b[i]);
       
        }
        double  max = Max(&b,n);
        double  min = Min(&b,n);
        double  sum = Sum(&b,n);

        ave =(sum - max - min)/(n - 2);
       
        printf("%.2lf",&ave);
        return 0;

               
}

Rank: 3Rank: 3

主题
11
帖子
40
C币
180 枚
在线时间
9 小时
发表于 2011-12-4 16:06:33 |显示全部楼层
luchar 发表于 2011-12-4 02:47
这么简单的还要来求助,自己多写写,多看看书,好好学吧

帮我看看哪儿错了

Rank: 3Rank: 3

主题
5
帖子
25
C币
159 枚
在线时间
15 小时
发表于 2011-12-4 18:29:16 |显示全部楼层
  1. double  max = Max(b,n);
  2.         double  min = Min(b,n);
  3.         double  sum = Sum(b,n);

  4.         ave =(sum - max - min)/(n - 2);
  5.         
  6.         printf("%.2lf",ave);
复制代码
把函数参数的&b改为b;还有printf语句,把&ave改为ave。

Rank: 3Rank: 3

主题
11
帖子
40
C币
180 枚
在线时间
9 小时
发表于 2011-12-4 22:52:43 |显示全部楼层
hgreen 发表于 2011-12-4 18:29
把函数参数的&b改为b;还有printf语句,把&ave改为ave。

....大意了
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-5-20 18:19

©2009-2011 cyuyan.com.cn

回顶部