交换数组元素,怎么加代码能输出最小元素下标imin


/*已知一个数组的10个元素,要求找出数组元素中的最小数并与第一个数组元素交换*/

#include<stdio.h>
int main()
{
    void Change(int a[10]);

    int b[10]={6,8,7,4,9,6,3,10,12,41};
    int i;
    printf("原来的数组为:\n");
    for(i=0;i<10;i++)
        printf("%d ",b[i]);
    printf("\n改变后的数组为:\n");
    Change(b);    //数组名作为实参,将数组(实参)数据传递给(形参)数组,并调用修改后的数组
        for(i=0;i<10;i++)
            printf("%d ",b[i]);
        printf("\n");
        return 0;
}

void Change(int a[10])
{
    int i,min,imin,t;
    for(i=1,min=a[0];i<10;i++)
        if(a[i]<min)
        {
            min=a[i];
            imin=i;      //找到最小的数组元素及其下标
        }
        t=a[0];a[0]=min;a[imin]=t;    //交换第一个与第imin个元素的位置
}

for循环少了大括号{},修改如下:

img

/*已知一个数组的10个元素,要求找出数组元素中的最小数并与第一个数组元素交换*/
 
#include<stdio.h>
int main()
{
    void Change(int a[10]);
 
    int b[10]={6,8,7,4,9,6,3,10,12,41};
    int i;
    printf("原来的数组为:\n");
    for(i=0;i<10;i++)
        printf("%d ",b[i]);
    printf("\n改变后的数组为:\n");
    Change(b);    //数组名作为实参,将数组(实参)数据传递给(形参)数组,并调用修改后的数组
        for(i=0;i<10;i++)
            printf("%d ",b[i]);
        printf("\n");
        return 0;
}
 
void Change(int a[10])
{
    int i,min,imin,t;
    for(i=1,min=a[0];i<10;i++){
        if(a[i]<min)
        {
            min=a[i];
            imin=i;      //找到最小的数组元素及其下标
            t=a[0];a[0]=min;a[imin]=t;    //交换第一个与第imin个元素的位置
        }
       
    }
    printf("min=%d,imin=%d\n",min,imin);
}


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632