#include
void main()
{
int arr[10];
int i,max,min,sum = 0;
float ave;
printf("请输入十个数:\n");
for(i = 0; i < 10; i++)
{
scanf("%d",arr+i);
if(i == 0)max = min = arr[i]; /*输入第一个数时把这个数赋值给最大值和最小值*/
else /*否则比较当前数是否比当前最大数大,是否比最小数小*/
{
max = arr[i] > max ? arr[i] : max;/*比当前最大数还要大,则把当前数复制给最大值*/
min = arr[i] < max ? arr[i] : min;/*比当前最小数还要小,则把当前数复制给最小值*/
}
sum = sum + arr[i];
}
ave = sum / 10.0;
printf("max: %d\nmin: %d\nave: %.2f\n",max,min,ave);
}
#include
void main()
{
int arr[10];
int max;
int min;
float ave;
int sum=0;
int i;
int t;
printf("请输入10个数字:\n");
for(i=0;i<10;i++)
scanf("%d",arr+i);
max=arr[0];
min=arr[0];
for(i=0;i<10;i++)
if(max
printf("max is %d\n",max);
for(i=9;i>=0;i--)
if(min>arr[i])
min=arr[i];
printf("min is %d\n",min);
for(i=0;i<10;i++)
sum=sum+arr[i];
ave=(float)sum/10;
printf("ave is %.1f\n",ave);
return 0;
}
看看是怎么修改的,,,就知道原理了。。。
求最大最小值的时候,不需要交换数据。按照你的程序,可以找到最大值最小值,但是最后,最大值和最小值都不知arr[]里了,都被交换到max 和min里了。所以按你的程序,求平均值会有问题。
int max=arr[0];
int min=arr[9];
这两个赋值语句应该放在
for(i=0;i<=9;i++)
scanf("%d",arr+i);
语句的后面,否则max和min的初值根本不是输入的数值