c语言高手们,请教你们一道题目

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:42:25
#include<stdio.h>
float max=0,min=0;
float average(float score[],int n)
{int i;
float sum=score[0];
float max=min=score[0];
for(i=1;i<n;i++)
{sum=sum+score[i];
if(max<score[i])max=score[i];
if(min>score[i])min=score[i];
}
return sum/n;
}
void main()
{float avg,score[10];
int i;
for(i=0;i<10;i++)
scanf("%f",&score[i]);
avg=average(score,10);
printf("Max:%f Min:%f Average:%6.2f\n",max,min,avg);
}
//最大值输出不正确,我查了很久不知道哪里出错了。请朋友们帮帮忙。

max,min都是全局变量,但是你到了函数中又声明了一遍,这样函数中的max就是函数中的局部变量,而不是外面的全局变量了。以函数中的为准。
float max=min=score[0];min没有重新声明,所以还是全局变量
改后的程序如下:
#include<stdio.h>
float max=0,min=0;
float average(float score[],int n)
{int i;
float sum=score[0];
max=min=score[0]; //这个地方你又声明了一次
for(i=1;i<n;i++)
{sum=sum+score[i];
if(max<score[i])max=score[i];
if(min>score[i])min=score[i];
}
return sum/n;
}
void main()
{float avg,score[10];
int i;
for(i=0;i<10;i++)
scanf("%f",&score[i]);
avg=average(score,10);
printf("Max:%f Min:%f Average:%6.2f\n",max,min,avg);
}

你这个是什么程序的“专家级”吧。。。
直接输文字不用过程。。。
你可以再用正常过程做一遍了

你做的没错啊
楼上的:max=min=score[0]; 这是赋值语句,全局变量可以被赋值吧

局部变量没返回,局部变量在退出子函数后自动消失。

2楼正解
float max=min=score[0]; 改成 max=min=score[0];
就可以了