C语言,求数组最大最小值

来源:百度知道 编辑:UC知道 时间:2024/06/15 02:36:24
输入10个整数,输出最大值max 最小值min,最后一个输入的整数,为什么不能比较出大小? 比大小截止到倒数第二个!这是为什么?!

#include"stdio.h"
#define SIZE 10
main()
{ int a[SIZE]={0};
int i=0,max=0,min=0;

for(max=a[i],min=a[i],i=0;i<SIZE;i++)
{
scanf("%d",&a[i]);

if(max<a[i])

max=a[i];
else
{ max=a[i];
min=max;}

}
printf("max=%d\n\nmin=%d",max,min);

}

最后输入的那个数已经比较过了,但是还没有把最后一个数值赋给max,或者是min.所以导致输出结果不对。

这段程序问题很多
min的初值是0,除非你输入负数否则min永远是零
else语句后面的最小值比较也有问题

改成这样就ok了
main()
{
int a[SIZE]={0};
int i=0,max=0,min=0;

for(i=0;i<SIZE;i++)
{
scanf("%d",&a[i]);
}
for(max=a[0],min=a[0],i=0;i<SIZE;i++)
{
if(max<a[i])
max=a[i];
if (min>a[i])
min=a[i];
}
printf("max=%d\n\nmin=%d",max,min);

}

求数组中的最大值和最小值,一般使用假设法,即假设数组的第1个元素为最大值,同时也是最小值,然后遍历数组,找到最大值和最小值。示例如下:

#include<stdio.h>
int main() 

int a[] = {1,2,3,4,5,6,7,8,9,10};
int max, min;
max = min = a[0]; //假设第1个元素即是最大值也是最小值。
int max_pos = 0, min_pos = 0;
//遍历数组,找出数组a中的最大数和最小数
for (int inx=0; inx!=sizeof(a) / sizeof(int