#include<stdio.h>
int main(void)
{
int i,j,n,k,t,l;
int min,max;
int a[10];
scanf("%d",&n);
min=10000000;
max=-10000000;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]); //输入数组各项的值
if(a[i]>max)
{
max=a[i]; //找出最大的数组值及其下标数值
t=i;
}
if(a[i]<min)
{
min=a[i]; //找出最小的数组值及其下标数值
l=i;
}
}
for(j=0;j<t;j++) //最小值左侧整体右移
{
a[j+1]=a[j];
a[0]=min;
}
for(k=n-1;k>l;k--) //最大值右侧整体左移
{
a[k-1]=a[k];
a[n-1]=max;
}
for(i=0;i<n;i++)
{
printf("%d",a[i]); //调序后的结果
}
return 0;
}
你应该把最小值和最大值的查找移位分开了操作,否则的话最大值或最小值的位置可能因为移位改变位置。
#include <stdio.h>
int main()
{
const int N = 10;
int a[N], n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
int min = a[0];
int j = 0;
for (int i = 1; i < n; i++)
{
if (a[i] < min)
{
min = a[i];
j = i;
}
}
for (int i = j; i < n - 1; i++)
a[i] = a[i + 1];
a[n - 1] = min;
int max = a[0];
j = 0;
for (int i = 1; i < n; i++)
{
if (a[i] > max)
{
max = a[i];
j = i;
}
}
for (int i = j; i > 0; i--)
a[i] = a[i - 1];
a[0] = max;
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
return 0;
}
其他数字对应的移项是啥意思啊?