jzxxoj编程C:1165: 【入门】最小数

题目描述
输入n个整数的数列,请找出数列中最小数所在的位置(若有多个最小数,则选最左边的那个最小数),把它与数列的第一个数对调,其他数的位置不动,输出此数列。
输入
数组数的个数n (N<=200) 一行n个数,用空格分开(都<=32767)
输出
第一行:最小数所在的位置(只需要输出最左边的一个的位置) 第二行:交换后的数组(一个空格隔开)
样例
输入 复制
3
2 6 1
输出 复制
3
1 6 2


#include <stdio.h>
#include <malloc.h>

void swap(int* a, int* b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

int main()
{
    int n;
    scanf("%d", &n);
    int* p = (int*)malloc(sizeof(int) * n);
    int min_num = 1000000000, min_place = -1;
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &p[i]);
        if (p[i] < min_num)
        {
            min_num = p[i];
            min_place = i;
        }
    }
    printf("%d\n", min_place + 1);
    swap(&p[0], &p[min_place]);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", p[i]);
    }
    return 0;
}

img