定义一个整型数组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;
}