由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。
#include
int main()
{
int arr[10] = { 0 };
int max1, max2, min1, min2;
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &arr[i]);
}
max1 = arr[0];
max2 = 0;
min1 = arr[0];
min2 = 0;
for (int i = 0; i < 10; i++)
{
if (max1 < arr[i])
{
max1 = arr[i];
max2 = i;
}
if (min1 > arr[i])
{
min1 = arr[i];
min2 = i;
}
}
//printf("%d %d %d %d", max1, max2, min1, min2);
int arr2[10] = { 0 };
for (int i = 0; i < 10; i++)
{
arr2[i] = arr[i];
}
for (int i = 0; i < max2; i++)//将最大数之前部分向后平移
{
arr[i + 1] = arr2[i];
}
for (int i = 10; i > min2; i--)//将最小数之后部分向前平移
{
arr[i - 1] = arr2[i];
}
arr[0] = max1;
arr[9] = min1;
for (int i = 0; i < 10; i++)
{
printf("%d", arr[i]);
}
return 0;
}
输入0 1 2 3 4 5 6 7 8 9,输出9 2 3 4 5 6 7 8 9 0
增减平移部分i值,发现对输出部分没有影响
输入0 1 2 3 4 5 6 7 8 9 输出9 1 2 3 4 5 6 7 8 0
或输入1 1 0 2 3 5 9 2 6 4 输出9 1 1 2 3 5 2 6 4 0
```c
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for (; i < 10; i++)
{
scanf("%d", &arr[i]);
}
int max = arr[0];
int min = arr[0];
int x = 0;//标记最大值的下标
int y = 0;//标记最小值的下标
for (i = 0; i < 10; i++)
{
if (max < arr[i])
{
max = arr[i];
x = i;
}
}
//将最大值处覆盖
//4 5 2 3 1 9 6 7 10 8
//
for (i = x ; i >= 0 ; i--)
{
arr[i] = arr[i-1];
}
arr[0] = max;
for (i = 0; i < 10; i++)
{
if (min > arr[i])
{
min = arr[i];
y = i;
}
}
//将最小值覆盖
for (i = y; i < 10-1; i++)//-1防止越界
{
arr[i] = arr[i + 1];
}
arr[9] = min;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
#include <stdio.h>
int main()
{
int arr[10];
int max1, max2, min1, min2, t1, t2;
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
max1 = arr[0];
max2 = 0;
min1 = arr[0];
min2 = 0;
for (int i = 1; i < 10; i++)
{
if (max1 < arr[i])
{
max1 = arr[i];
max2 = i;
}
if (min1 > arr[i])
{
min1 = arr[i];
min2 = i;
}
}
// printf("%d %d",max2, min2);
for (int i = max2; i > 0; i--) // 将最大值移到最前面
{
t1 = arr[i];
arr[i] = arr[i-1];
arr[i-1] = t1;
}
for (int i = 0; i < 10; i++) // 移动之后,最小值的位置可能改变了
{
if (arr[i] == min1)
min2 = i;
}
for (int i = min2; i < 9; i++) // 将最小值移到最后面
{
t2 = arr[i];
arr[i] = arr[i+1];
arr[i+1] = t2;
}
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}