C语言求差值,编译无错误,结果不正确

#include<stdio.h>
int main()

{
int n,a,b,num[1000],max,min;
scanf("%d",&n);
for(a=0;a<n;a++)
{
    scanf("%d",&num[a]);
    for(b=0;b<n;b++)
    if(num[a]<num[b])
    max=num[b];
}
for(a=0;a<n;a++)
 for(b=0;b<n;b++)
 {
     if(num[a]>num[b])
    min=num[b];
 }
printf("%d",max-min);
return 0;
}

你这逻辑不对啊,第一个for循环里,还没给数组赋值完呢,而且比较的时候,应该用当前的数跟最大值或者最小值比较啊,不是用num[a]和num[b]比较啊。
代码修改如下:

#include<stdio.h>
int main()
{
    int n,a,b,num[1000],max,min;
    scanf("%d",&n);
    for(a=0;a<n;a++)
    {
        scanf("%d",&num[a]);
    }
    max = num[0];
    min = num[0];
    for(a=1;a<n;a++)
    {
        if(num[a] > max) max = num[a];
        if(num[a] < min) min = num[a];
    }
        printf("%d",max-min);
        return 0;
}