基础C语言数据组问题前来膜拜各位大佬

定义一个整型数组a[10],输入10个任意大小的整数(占据a[0]~a[9]);找出其中的最小数并挖去该数(即剩下的数占据a[0]~a[8],再让a[9]=0);最后输出该数组的数据。
想了挺久的,写出判断大小后就没有头绪了。

这里只考虑一个最小的数

#include <stdio.h>

int main()
{
    int i,min,min_idx;
    int arr[10] = {0};

    //输入
    for(i=0;i<10;i++)
        scanf("%d",&arr[i]);
    //找出最小,并记下索引值
    min = arr[0];
    for(i=1;i<10;i++)
        if(min > arr[i])
        {
            min = arr[i];
            min_idx = i;
        }
    printf("Min=%d\n",min);
    //最小的值右边所有元素向前移动一格
    for(i=min_idx;i<10;i++)
        arr[i] = arr[i+1];
    arr[9] = 0;
    printf("Output: ");
    for(i=0;i<10;i++)
        printf("%d ",arr[i]);
    printf("\n");
    return 0;
}

什么数组问题,你这个就是选择排序(逆序)的第一趟,只是交换以后,原来a[9]存放的是最小的数字,你现在改成0而已。

#include <stdio.h>

int main()
{
    int a[10];
    for (int i = 0; i < 10; i++) scanf("%d", &a[i]);
    int min = 0;
    for (int i = 1;i < 10; i++)
        if (a[min] > a[i]) min = i;
    a[min] = a[9];
    a[9] = 0; //正规的排序,这里应该是交换
    return 0;
}

问题解决,请采纳

#include
int main()
{
int i, j, minIndex, arr[10];
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
for ( i = 9; i >= 0; i--)
{
minIndex = i;
for (j = 0; j < i; j++)
{
if (arr[j]<arr[minIndex])
{
minIndex = j;
}
}
printf("%d ", arr[minIndex]);
arr[minIndex] = arr[i];
arr[i] = 0;
}
return 0;
}