codeup 1863 C语言-数字
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
易错点
两次交换是先后进行的,若先交换最大的,若最小值恰好位于q[9],则交换过后,最小值就会被改变,造成错误。所以第一次交换过后,应判断最小值是否恰好位于q[9],若位于则更新最小值所在的位置为交换前最大值所在的位置,再进行最小数与第一个数对换。先交换小的同理。
if(min==9) min=max;
AC代码
#include<cstdio>
int main()
{
int x;
int max,min;
int q[10];
for(int i=0;i<10;i++)
{
scanf("%d",&q[i]);
if(i==0)
{
max=0;
min=0;
}
else
{
if(q[i]>q[max])max=i;
if(q[i]<q[min])min=i;
}
}
int temp=q[max];
q[max]=q[9];
q[9]=temp;
if(min==9) min=max;
temp=q[min];
q[min]=q[0];
q[0]=temp;
for(int i=0;i<10;i++)
{
printf("%d ",q[i]);
}
printf("\n");
}