问题遇到的现象和发生背景
由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。
用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
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