user-0 提问: 青年歌手参加歌曲大奖赛，输入6个评委的打分，求这位选手的平均得分（去掉一个最高分和最低分）

回复:
user: user-0
content: 引用 2 楼 user-1的回复:[quote=引用 楼主 ljn20010724 的回复:] 参考答案中分数是9.26 9.17 9.35 9.28 9.24 9.33 平均分是:9.277501 但是我代码调试时发现它不会执行if(a[i]>max){max=a[i];} 这条语句是为什么？ #include<stdio.h> main() { 	float a[6],sum=0.0,average=0.0,max=a[0],min=a[0]; 	int i; 	for(i=0;i<6;i++)scanf("%f",&a[i]);     for(i=0;i<6;i++) 	{ 		sum=sum+a[i]; 		if(a[i]<min) 		{ 		min=a[i]; 		}  		if(a[i]>max) 		{ 		max=a[i]; 		}  	} 	sum=sum-max-min; 	average=sum/4.0;	     printf("平均分：%f\n",average); } #include<stdio.h> int main() { 	float a[6] = {0}, sum = 0.0, average = 0.0, max = a[0], min = a[0]; 	int i; 	for (i = 0; i < 6; i++) 		scanf_s("%f", &a[i]); 	max = a[0]; 	min = a[0]; 	for (i = 0; i < 6; i++) 	{ 		sum = sum + a[i]; 		if (a[i] < min) 		{ 			min = a[i]; 		} 		if (a[i] > max) 		{ 			max = a[i]; 		} 	} 	sum = sum - max - min; 	average = sum / 4.0; 	printf("平均分：%f\n", average); 	return 0; } 你的max和min在数组a还没输入数据并且也没初始化的时候把a[0]赋值给它了 导致这两个变量是两个未知数 所以不会按你预期的走 你可以不在上面赋值初始化 直接初始化为0 然后下面赋值 如果非要在上面赋值初始化 你只能像这个代码这样写 而且下面还得赋值[/quote] 噢噢噢，我会了，谢谢你

user: user-0
content: 引用 2 楼 user-1的回复:[quote=引用 楼主 ljn20010724 的回复:] 参考答案中分数是9.26 9.17 9.35 9.28 9.24 9.33 平均分是:9.277501 但是我代码调试时发现它不会执行if(a[i]>max){max=a[i];} 这条语句是为什么？ #include<stdio.h> main() { 	float a[6],sum=0.0,average=0.0,max=a[0],min=a[0]; 	int i; 	for(i=0;i<6;i++)scanf("%f",&a[i]);     for(i=0;i<6;i++) 	{ 		sum=sum+a[i]; 		if(a[i]<min) 		{ 		min=a[i]; 		}  		if(a[i]>max) 		{ 		max=a[i]; 		}  	} 	sum=sum-max-min; 	average=sum/4.0;	     printf("平均分：%f\n",average); } #include<stdio.h> int main() { 	float a[6] = {0}, sum = 0.0, average = 0.0, max = a[0], min = a[0]; 	int i; 	for (i = 0; i < 6; i++) 		scanf_s("%f", &a[i]); 	max = a[0]; 	min = a[0]; 	for (i = 0; i < 6; i++) 	{ 		sum = sum + a[i]; 		if (a[i] < min) 		{ 			min = a[i]; 		} 		if (a[i] > max) 		{ 			max = a[i]; 		} 	} 	sum = sum - max - min; 	average = sum / 4.0; 	printf("平均分：%f\n", average); 	return 0; } 你的max和min在数组a还没输入数据并且也没初始化的时候把a[0]赋值给它了 导致这两个变量是两个未知数 所以不会按你预期的走 你可以不在上面赋值初始化 直接初始化为0 然后下面赋值 如果非要在上面赋值初始化 你只能像这个代码这样写 而且下面还得赋值[/quote] 可是我在定义中把min和max的初值设为0.0之后代码就不执行if(a[i]<min){min=a[i];}这条语句了

user: user-1
content: 引用 楼主 ljn20010724 的回复:参考答案中分数是9.26 9.17 9.35 9.28 9.24 9.33 平均分是:9.277501 但是我代码调试时发现它不会执行if(a[i]>max){max=a[i];} 这条语句是为什么？ #include<stdio.h> main() { 	float a[6],sum=0.0,average=0.0,max=a[0],min=a[0]; 	int i; 	for(i=0;i<6;i++)scanf("%f",&a[i]);     for(i=0;i<6;i++) 	{ 		sum=sum+a[i]; 		if(a[i]<min) 		{ 		min=a[i]; 		}  		if(a[i]>max) 		{ 		max=a[i]; 		}  	} 	sum=sum-max-min; 	average=sum/4.0;	     printf("平均分：%f\n",average); } 如果要求高精度 尽量定义成double型

user: user-1
content: 引用 楼主 ljn20010724 的回复:参考答案中分数是9.26 9.17 9.35 9.28 9.24 9.33 平均分是:9.277501 但是我代码调试时发现它不会执行if(a[i]>max){max=a[i];} 这条语句是为什么？ #include<stdio.h> main() { 	float a[6],sum=0.0,average=0.0,max=a[0],min=a[0]; 	int i; 	for(i=0;i<6;i++)scanf("%f",&a[i]);     for(i=0;i<6;i++) 	{ 		sum=sum+a[i]; 		if(a[i]<min) 		{ 		min=a[i]; 		}  		if(a[i]>max) 		{ 		max=a[i]; 		}  	} 	sum=sum-max-min; 	average=sum/4.0;	     printf("平均分：%f\n",average); } #include<stdio.h> int main() { 	float a[6] = {0}, sum = 0.0, average = 0.0, max = a[0], min = a[0]; 	int i; 	for (i = 0; i < 6; i++) 		scanf_s("%f", &a[i]); 	max = a[0]; 	min = a[0]; 	for (i = 0; i < 6; i++) 	{ 		sum = sum + a[i]; 		if (a[i] < min) 		{ 			min = a[i]; 		} 		if (a[i] > max) 		{ 			max = a[i]; 		} 	} 	sum = sum - max - min; 	average = sum / 4.0; 	printf("平均分：%f\n", average); 	return 0; } 你的max和min在数组a还没输入数据并且也没初始化的时候把a[0]赋值给它了 导致这两个变量是两个未知数 所以不会按你预期的走 你可以不在上面赋值初始化 直接初始化为0 然后下面赋值 如果非要在上面赋值初始化 你只能像这个代码这样写 而且下面还得赋值