求这些数中的最小的数和它的下标,然后将它与数组最前面的元素交换位置。

#include <stdio.h>
int main()
{
    int a[10]={87,78,69,79,98,86,91,75,71,95};
    int min,i;
    min=a[0];
    for(i=0;i<10;i++)
    if(a[i]<min)
    min=a[i];
    printf("min=a[%d]=%d",i,min);
    return 0;
}

为什么输出是 min=a[10]=69?应该是a[2]啊,怎么改啊救命救命,交换位置我也不会

因为循环后i的值就是10了

供参考:

#include <stdio.h>
int main()
{
    int a[10]={87,78,69,79,98,86,91,75,71,95};
    int min,i,k;
    k=0;
    min=a[0];
    for(i=0;i<10;i++)
    {
        if(a[i]<min)
            {min=a[i];
                k=i;
            }}
    printf("min=a[%d]=%d",k,min);
    return 0;
}

 

你没有把下标记录下来

int main(int argc, char** argv)
{
    int a[10]={87,78,69,79,98,86,91,75,71,95};

    int min,i;

    min=a[0];
    int num = 0;

    for(i=0;i<10;i++)
    {
        if(a[i]<min)
        {
            min=a[i];
            num = i;
        }
    }

    //交换
    int temp = 0;
    temp = a[0];
    a[0] = a[num];
    a[num] = temp;

    printf("min=a[%d]=%d",num,min);

    return 0;
}

 

供参考:

#include <stdio.h>
int main()
{
    int a[10]={87,78,69,79,98,86,91,75,71,95};
    int min,i,t;
    min=a[0];
    for(i=0;i<10;i++)
        if(a[i]<min){
           min=a[i];
           t=i;
        }
    printf("min=a[%d]=%d\n",t,a[t]);

    a[t] = a[0];//然后将它与数组最前面的元素交换位置
    a[0] = min;
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    
    return 0;
}