2022-11-14 04:02发布
scanf(%d%d%d%d%d%d%d%d%d%d,&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[
方法实现有多种:一、最直观的方式:1、将输入的十个数,存到数组中;2、遍历数组,找到最大值和最小值;3、从数组中将最大值和最小值移除;4、将剩余的8个数值累加,并将和值除以8,得到平均值;5、输出结果。二、优化方式:分析原始算法,需要循环多次,包括输入,查找最值,移除,累加等。针对此,可以进行优化。1、查找最大值和最小值可以通过一个循环完成;2、由于只是要计算最终的平均值,所以可以不从数组移除,而是累加10个数的和值,再减去两个最值;3、输入时可以不保存数组,而是输入一个处理一个,降低空间开销;4、输入时可以同时执行累加及查找最值操作。 三、经过优化,代码可以书写如下:#include <stdio.h>int main(){ float aver=0; int i,n,max,min; scanf("%d",&max); aver=min=max;//输入第一个数,当做初始的最大最小值。此时和值也为该值。 for(i = 1;i<10;++i)//循环9次。 { scanf("%d",&n);//输入剩余9个数。 aver+=n;//累加。 if(max<n) max=n;//查找最大值。 else if(min>n)min=n;//查找最小值。 } aver-=min+max;//在和值中减去两个最值。 aver/=8;//计算平均值。 printf("%f\n", aver);//输出结果。 return 0;}
最多设置5个标签!
方法实现有多种:
一、最直观的方式:
1、将输入的十个数,存到数组中;
2、遍历数组,找到最大值和最小值;
3、从数组中将最大值和最小值移除;
4、将剩余的8个数值累加,并将和值除以8,得到平均值;
5、输出结果。
二、优化方式:
分析原始算法,需要循环多次,包括输入,查找最值,移除,累加等。针对此,可以进行优化。
1、查找最大值和最小值可以通过一个循环完成;
2、由于只是要计算最终的平均值,所以可以不从数组移除,而是累加10个数的和值,再减去两个最值;
3、输入时可以不保存数组,而是输入一个处理一个,降低空间开销;
4、输入时可以同时执行累加及查找最值操作。
三、经过优化,代码可以书写如下:
#include <stdio.h>
int main()
{
float aver=0;
int i,n,max,min;
scanf("%d",&max);
aver=min=max;//输入第一个数,当做初始的最大最小值。此时和值也为该值。
for(i = 1;i<10;++i)//循环9次。
{
scanf("%d",&n);//输入剩余9个数。
aver+=n;//累加。
if(max<n) max=n;//查找最大值。
else if(min>n)min=n;//查找最小值。
}
aver-=min+max;//在和值中减去两个最值。
aver/=8;//计算平均值。
printf("%f\n", aver);//输出结果。
return 0;
}
一周热门 更多>