li_84614 发表于 2015-8-18 10:46:03

求指导,为何取值结果总不对?(C语言)

为何5个数比较,取出最大值和最小值,得出的结果是错误的?代码如下

#include<stdio.h>

float vs(float ave[],int n);//求最大值函数
float sv(float ave[],int n);//求最小值函数

void main()
{
float sgxs,aver;
float max,min;
float sum=0,s;
int i;
for(i=0;i<5;i++)
{
scanf("%f",&sgxs);
      s=sgxs;
      sum+=s;
}

aver=sum/5;//平均值
max=vs(sgxs,5);//最大值
min=sv(sgxs,5);//最小值
printf("aver=%6.2f,max=%6.2f,min=%6.2f\n",aver,max,min);
}

float vs(float ave[],int n)
{
float max=0;
int i;
float z;
max=ave;
for(i=0;i<n;i++)
{
if(ave>max)

      z=ave;
      
}

return (z);

}

float sv(float ave[],int n)
{
float min=0;
int i;
float w;
min=ave;
for(i=0;i<n;i++)
{
if(ave<min)
      
      w=ave;
}
return (w);
}

为何结果不最缺?(结果如下)

哥斯拉不说话 发表于 2015-8-18 12:10:02

本帖最后由 哥斯拉不说话 于 2015-8-18 12:11 编辑

#include<stdio.h>

float vs(float ave[],int n);//求最大值函数
float sv(float ave[],int n);//求最小值函数

int main()
{
        float sgxs, aver;
        float max, min;
        float sum=0, s;
        int i;
       
        for(i=0;i<5;i++)
        {
                scanf("%f",&sgxs);
              s    = sgxs;
              sum += s;
        }
        aver = sum / 5.0;//平均值
        max= vs(sgxs, 5);//最大值
        min= sv(sgxs, 5);//最小值
       
        printf("aver=%6.2f, max=%6.2f, min=%6.2f\n", aver, max, min);
        return 0;
}

float vs(float ave[],int n)
{
        float max=0;
        int i;
       
        max=ave;
        for(i=1;i<n;i++)
        {
                if(ave > max)
                        max = ave;
        }
       
        return max;
}

float sv(float ave[],int n)
{
        float min=0;
        int i;
       
        min=ave;
        for(i=1;i<n;i++)
        {
                if(ave < min)
                        min = ave;
        }
       
        return min;
}

li_84614 发表于 2015-8-19 17:09:47

谢谢,指教:victory:
页: [1]
查看完整版本: 求指导,为何取值结果总不对?(C语言)