| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1714 人关注过本帖
标题:请问用数组去除最大值和最小值求平均值的题显示incompatiable type for arg ...
只看楼主 加入收藏
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
结帖率:96.88%
收藏
已结贴  问题点数:20 回复次数:5 
请问用数组去除最大值和最小值求平均值的题显示incompatiable type for argument怎么办呀
#include<stdio.h>
int max(float a[100]);
int min(float a[100]);
int main()
{
    float f[100];
    int a,b,c;
    float sum;
    scanf("%d",&a);
    for(int i=0;i<a;i++)
       scanf("%f",&f[i]);
        b=max(f[100]);
        c=min(f[100]);

            for(int i=0;i<a;i++)
            {
                if(i!=b&&i!=c)
                    sum+=f[i];
                }
                printf("%.2f",sum/a-2);

return 0;



}
int max(float a[100])
{
float x;
int max1=a[0];
for(int i=0;;i++)
{if(a[i+1]>a[i])
max1=a[i+1];
}
for(int i=0;;i++)
{if(a[i]==max1)
    x=i;}
return x;

    }
int min(float a[100])
{
float x;
int min1=a[0];
for(int i=0;;i++)
{if(a[i+1]<a[i])
min1=a[i+1];
}
for(int i=0;;i++)
{if(a[i]==min1)
    x=i;}
return x;

    }
搜索更多相关主题的帖子: i++ for int float if 
2019-11-23 19:30
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
零基础大一,刚刚学数组,所以可能写得很拖沓,不懂是不是定义函数出了问题,看不出来
是作业题

我想要两颗西柚。
2019-11-23 19:31
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
请救救孩子吧

我想要两颗西柚。
2019-11-23 19:33
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
题目:评分系统一开始会输入整数n表示有n位评委打分,之后会依次输入n个分数{a1,a2,...,an},聪哥想计算去掉这n个分数中的最高分和最低分之后的平均数。
结果保留两位小数。
比如1 2 3 4 6这个5个数字在这套评分系统中去掉最高分6和最低分1后的平均分数为3

2<n≤100
0≤a1,a2,a3,...,an≤1,000,000,000
样例输入1:
10
98.1 98.2 98.3 98.4 98.5 98.6 98.7 98.8 98.9 99.0
样例输出1:
98.55

我想要两颗西柚。
2019-11-23 19:36
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:566
专家分:3690
注 册:2019-7-29
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int max(float *a,int n);
int min(float *a,int n);

int main()
{
    float f[100];
    int a,b,c;
    float sum;
    scanf("%d",&a);
    for(int i=0;i<a;i++)
       scanf("%f",&f[i]);
    b=max(f,a);
    c=min(f,a);

    for(int i=0;i<a;i++)
    {
        if(i!=b&&i!=c)
            sum+=f[i];
    }
    printf("%.2f",sum/(a-2));

    return 0;
}

int max(float *a,int n)
{
    int x;
    float max1=a[0];

    for(int i=0;i<n-1;i++)
    {
        if(a[i+1]>max1)
            max1=a[i+1];
    }

    for(int i=0;i<n;i++)
    {
        if(abs(a[i]-max1)<0.01)
            x=i;
    }

    return x;
}

int min(float *a,int n)
{
    int x;
    float min1=a[0];

    for(int i=0;i<n-1;i++)
    {
        if(a[i+1]<min1)
            min1=a[i+1];
    }

    for(int i=0;i<n;i++)
    {
        if(abs(a[i]-min1)<0.01)
            x=i;
    }

    return x;
}

你这错的是一塌糊涂。
1.int min(float a[100]);函数里的形参不对,你这只是把a[100]的这个值传递到子函数里了,而不是将整个数组传递过去。
2.子函数中for(int i=0;;i++)居然没有判断语句,那你是靠什么退出循环的。
3.子函数里if(a[i+1]>a[i])比较不对,应该是if(a[i+1]>max1)
4.子函数中float x;int min1=a[0];数据类型定义错误,应该是int x;   float max1=a[0];
5.子函数中if(a[i]==max1)比较不对,浮点数不能使用==进行比较,因为浮点数原本就是大约的值,不存在相等的,应该使用(abs(a[i]-max1)<0.01)当两个数的绝对值小于多少的时候,我们就认为这两个数相等。
6.主函数中printf("%.2f",sum/a-2);应给将a-2括起来,为printf("%.2f",sum/(a-2));

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-23 23:23
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
收藏
得分:0 
回复 5楼 纯蓝之刃
谢谢,刚刚才接触,还不是很懂数组的规则,就按照自己的猜测写了循环,非常感谢!

我想要两颗西柚。
2019-11-24 14:07
快速回复:请问用数组去除最大值和最小值求平均值的题显示incompatiable type fo ...
数据加载中...
 
   



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

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