最小值为什么不对??

我的代码


#include  <stdio.h>
int main()
{
    int i,a[8],max=a[0],min=a[0];
    printf("请输入八个整数:");
    for(i=0;i<=7;i++)
    scanf("%d",&a[i]);
    for(i=7;i>=0;i--)
        printf("%d\t",a[i]);
    printf("\n");
    for(i=0;i<=7;i++)
    {
        max=(max<a[i])?a[i]:max;
        min=(min>a[i])?a[i]:min;//求最小值
    }
    printf("最大值为%d,最小值为%d\n",max,min);
    return 0;
}

img

max=a[0],min=a[0];放到scanf之后,你现在放的位置,a数组还没有赋值啊

 
#include  <stdio.h>
int main()
{
    int i,a[8],max,min;
    printf("请输入八个整数:");
    for(i=0;i<=7;i++)
        scanf("%d",&a[i]);
    max = min= a[0];
    for(i=7;i>=0;i--)
        printf("%d\t",a[i]);
    printf("\n");
    for(i=0;i<=7;i++)
    {
        max=(max<a[i])?a[i]:max;
        min=(min>a[i])?a[i]:min;//求最小值
    }
    printf("最大值为%d,最小值为%d\n",max,min);
    return 0;
}

先输入,再max=min=a[0]

因为你在没有给数组a赋值的情况下就把a [0]的值赋给了max和min, 这导致他们都是乱码, 把max和min的赋初值放在给a赋值之后