| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1121 人关注过本帖
标题:程序能运行,但是运行时,无论输入20个怎样的数,给出的结果都是一样的的, ...
只看楼主 加入收藏
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:15 
程序能运行,但是运行时,无论输入20个怎样的数,给出的结果都是一样的的,而且结果也是不对
要求是从键盘上输入20个整数,求去掉最大值和最小值以后那些元素的平均值、
虽然程序能运行,但是运行时,无论输入20个怎样的数,给出的结果都是一样的的,而且结果也是不对。
#include<stdio.h>
int main()
{
    int i,a[20],max,min,sum=0,count=0;
    for(i=0;i<20;i++)
    scanf("%d",&a[i]);
    max=min=a[0];
    for(i=0;i<20;i++)
      if(a[i]>max)min=a[i];
      for(i=0;i<20;i++)
      if(a[i]!=max&&a[i]!=min)
      {
          sum +=a[i];
          count++;
      }
      printf("count=%d,average=%f\n",count,sum*1.0/count);
      return 0;
}
搜索更多相关主题的帖子: 平均值 include 最大值 
2012-07-13 15:04
洛神似晓
Rank: 2
等 级:论坛游民
帖 子:15
专家分:16
注 册:2012-7-11
收藏
得分:2 
回复 楼主 wangxiang935
是不是应该分开判断呢
 if(a[i]>max) max=a[i];
      if(a[i]<min) min=a[i];
我也不清楚,你可以试一下。
2012-07-13 15:21
洛神似晓
Rank: 2
等 级:论坛游民
帖 子:15
专家分:16
注 册:2012-7-11
收藏
得分:1 
回复 楼主 wangxiang935
我错了。。我改成5个数,试1,2,3,4,5满足,但是改成其它的就不行了
2012-07-13 15:27
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:2 
if(a[i]>max)min=a[i];
比最大的还大,把这个值赋给最小值???什么逻辑???

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2012-07-13 15:29
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 4楼 peach5460
刚才自己太粗心了,这个再看看哈~~
count是对的,但是average就是不对啊

#include<stdio.h>
int main()
{
    int i,a[5],max,min,sum=0,count=0;
    for(i=0;i<5;i++)
    scanf("%d",&a[i]);
    max=min=a[0];
    for(i=0;i<5;i++)
      if(a[i]>max)max=a[i];
      else if(a[i]<min)min=a[i];
      for(i=0;i<5;i++)
      if(a[i]!=max&&a[i]!=min)
      {
          sum +=a[i];
          count++;
      }
      printf("count=%d,average=%f\n",count,sum*1.0/count);
      return 0;
}
2012-07-13 16:52
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 3楼 洛神似晓
#include<stdio.h>
int main()
{
    int i,a[5],max,min,sum=0,count=0;
    for(i=0;i<5;i++)
    scanf("%d",&a[i]);
    max=min=a[0];
    for(i=0;i<5;i++)
      if(a[i]>max)max=a[i];
      else if(a[i]<min)min=a[i];
      for(i=0;i<5;i++)
      if(a[i]!=max&&a[i]!=min)
      {
          sum +=a[i];
          count++;
      }
      printf("count=%d,average=%f\n",count,sum*1.0/count);
      return 0;
}

count是对的,但average是错的
2012-07-13 16:53
long0042
Rank: 2
等 级:论坛游民
帖 子:38
专家分:50
注 册:2008-3-5
收藏
得分:0 
程序代码:
#include <stdio.h>

#define NUM 10

int main()
{
    int num[NUM];
    int min, max;
    int minIndex = 0;
    int maxIndex = 0;

    for (int i = 0; i < NUM; i++)
        scanf("%d", &num[i]);

    max = min = num[0];
    for (int i = 1; i < NUM; i++)
    {
        if (min > num[i])
        {
            min = num[i];
            minIndex = i;
        }

        if (max < num[i])
        {
            max = num[i];
            maxIndex = i;
        }
    }

    num[minIndex] = 0;
    num[maxIndex] = 0;

    float total = 0.0f;
    for (int i = 0; i < NUM; i++)
    {
        total += num[i];
    }

    printf("average: %f %f\n", total, total/(NUM - 2));

    return 0;
}
2012-07-13 17:15
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
回复 7楼 long0042
谢谢你了,不过我想知道我原来那个在改正后是哪边错了呢?
2012-07-13 17:21
Xmas
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2012-6-29
收藏
得分:0 
如果有相同数字就会出错
2012-07-13 20:53
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:0 
回复 8楼 wangxiang935
注意你的判断语句if(a[i]!=max&&a[i]!=min),这句话的条件是只要一个数等于max或者min就不加上去,这样当有多个和max或者min一样的值时就会出现错误。你可以考虑把所有的值求和,然后减去max 和 min来进行求和

贵在坚持!
2012-07-13 23:47
快速回复:程序能运行,但是运行时,无论输入20个怎样的数,给出的结果都是一样的 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026806 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved