定义1个一维数组:int arr[10],然后从键盘输入10个整数,编程求出其最大值、最小值以及平均值,并在屏幕上

我自己写的程序如下,可是结果不尽人意,求解答。。。
#include<stdio.h>
void main()
{
int arr[10];
int max=arr[0];
int min=arr[9];
int ave;
int sum=0;
int i;
int t;
printf("请输入10个数字:\n");
for(i=0;i<10;i++)
scanf("%d",arr+i);
for(i=0;i<10;i++)
{
if(max<arr[i])
t=max;
max=arr[i];
arr[i]=t;
}
printf("max is %d\n",max);
for(i=9;i>=0;i--)
{
if(min>arr[i])
t=min;
min=arr[i];
arr[i]=t;
}
printf("min is %d\n",min);
for(i=0;i<9;i++)
{
sum=sum+arr[i];
sum=10*ave;
}

printf("ave is %d\n",ave);

}

#include<stdio.h>
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);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-02
#include<stdio.h>
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<arr[i])
max=arr[i];
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;
}
看看是怎么修改的,,,就知道原理了。。。本回答被网友采纳
第2个回答  2012-06-02
求最大最小值的时候,不需要交换数据。按照你的程序,可以找到最大值最小值,但是最后,最大值和最小值都不知arr[]里了,都被交换到max 和min里了。所以按你的程序,求平均值会有问题。
第3个回答  2012-06-14
int max=arr[0];
int min=arr[9];
这两个赋值语句应该放在
for(i=0;i<=9;i++)
scanf("%d",arr+i);
语句的后面,否则max和min的初值根本不是输入的数值
相似回答