编写程序,求整数数组中的最大值,最小值和平均值.

麻烦给检查一下代码 调了好久了
# include <iostream>
using namespace std;
void main()
{
float average;
int i,max,sum,a[10],min;
scanf("%d",a);
max=a[0];
min=a[0];
sum=a[0];
for(i=1;i<10;i++)
{
sum+=a[i];
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
average=sum/10;
printf("最大值为:%d\n",max);
printf("最小值为:%d\n",min);
printf("平均值为:%d\n",average);
}

# include <iostream>
using namespace std;
void main(){
float average;
int i,j,max,sum,a[10],min,temp;
//循环输入数字,然后存放在数组中,你在那个程序只能输入一次,还有数组的下标不是从1开始,而是从0开始,还有数组输入也不对,你看一下正确的写法
for(i=0;i<10;i++){
printf("请输入第%d个数:",(i+1));
//这个是数组的循环赋值
scanf("%d",&a[i]);
sum+=a[i];
}
//求平均值,你输出的转译符有问题,输出的时候应该是%2f不是%d,%d是整数不是小数,计算的时候必须将整型数字变成float型,不然得不到正确答案,因为/在两边都是整数的时候会取商的整数部分,如果是整10的,没有问题,如果不是就会得到错误答案,所以要乘以1.0,将其转换成小数
average=sum*1.0/10;
//找到最大值和最小值就必须使用冒泡排序,这是一个双重嵌套for循环的使用
for(i=0;i<10;i++){
for(j=0;j<10-i;j++){
if(a[j]<a[j+1]){
//冒泡排序中的交换数组元素
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//使用冒泡排序后最大值和最小值就在数组的两头,所以直接取出来就可以了,我是用的是逆序排序,你将小于号改成大于号,那么最大值和最小值就反过来了,也就是a[0]是最小值,a[9]是最大值
max=a[0];
min=a[9];
printf("最大值为:%d\n",max);
printf("最小值为:%d\n",min);
printf("平均值为:%2f\n",average);
}
温馨提示:答案为网友推荐,仅供参考
相似回答