| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1365 人关注过本帖
标题:请教个问题
只看楼主 加入收藏
岳飞再世YUE
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-16
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
请教个问题
#include<stdio.h>
int main()
{
    void max_min(float a[10]);
    float a[10],sum,average;
    int i;
    printf("\n");
    for(i=0;i<10;i++)
    {printf("请输入评委%d的打分:",i+1);
    scanf("%f",&a[i]);}
    max_min(a);
        for(i=0;i<8;i++)
            printf(" %2.2f ",a[i]);
        printf("\n");
        sum=0;
    for(i=0;i<8;i++)
        sum=sum+a[i];
    average=sum/8;
        printf("故平均分为:%3.2f\n",average);
    return 0;
}
void max_min(float b[10])
{    float max,min;
    int t1,t2,i;
    max=b[0];
    t1=0;
    for(i=0;i<10;i++)
   
        if(max<b[i])
        {
            max=b[i];
            t1=i;
        }
    for(i=t1;i<=10;i++)
        b[i]=b[i+1];   /*找出最大值的坐标,并将所有之后的数字前移*/
   
    min=b[0];
    t2=0;
   
    for(i=0;i<10;i++)
        if(min>b[i])
        {
            min=b[i];
            t2=i;
        }
   
    for(i=t2;i<9;i++)
        b[i]=b[i+1]; /*同上,找最小的*/
}
这个程序是为了去掉数组中最大最小值并输出(保持原来顺序不要动的输出)然后计算均值并输出,但是运行起来每次被删的都只有最大值和最后一个值。。不知道为什么,有大神能剖析一下为什么吗?十分感谢!
搜索更多相关主题的帖子: include average return 
2017-04-26 23:56
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:5 
移动数组干蛋,找到最大值和最小值,记录它们的下标,然后将这两个值改为0就可以了。
移动数组元素?亏你想得出来。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-27 00:00
岳飞再世YUE
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-16
收藏
得分:0 
回复 2楼 renkejun1942
额。。我主要是纠结。。我这个到底哪儿的逻辑有问题吗?为什么最大值丢失的就没问题,最小值就会出问题呢?
2017-04-27 00:14
岳飞再世YUE
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-16
收藏
得分:0 
回复 2楼 renkejun1942
不过还是要谢谢大佬指点,如果能看看我这个源代码问题出在哪儿就更好了
2017-04-27 00:16
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
这里两处
程序代码:
    for (i = t1; i < 10; i++)
        b[i] = b[i + 1];   /*找出最大值的坐标,并将所有之后的数字前移*/

    min = b[0];
    t2 = 0;

    for (i = 0; i<9; i++)
        if (min>b[i])
        {
            min = b[i];
            t2 = i;
        }
2017-04-27 09:44
岳飞再世YUE
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-4-16
收藏
得分:0 
回复 5楼 grmmylbs
两处?什么意思呀?
2017-04-28 09:58
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:5 
移动数组元素太麻烦了
直接int max, min,然后找出最大的以及最小的元素的下标
然后在循环里写一个if语句把这两个去掉就行了
if(i != max || i != min) sum = sum + a[i];
2017-04-28 12:35
孽之皇
Rank: 1
来 自:百慕大
等 级:新手上路
帖 子:20
专家分:5
注 册:2017-2-3
收藏
得分:5 

不做新人的编程师,不是好的编程师。
2017-04-28 13:28
快速回复:请教个问题
数据加载中...
 
   



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

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