题目描述
由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。
输入
任意10个数
输出
数据调整后的10个数。
样例输入
0 1 2 3 4 5 6 7 8 9
样例输出
9 1 2 3 4 5 6 7 8 0
题目分析:
① 定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置;
② 在循环开始前,将第一个元素作为参考,将其值分别存入d1、d2,将其下标分别存入x1、x2;
③ 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入x1,这个过程结束后d1存放最大值,x1存放最大值的下标。然后开始进行数据位置调换。
在循环中将其它元素逐一与d2比较,若比d2小,将其存入d2,并将其下标存入x2,这个过程结束后d2存放最小值,x2存放最小值的下标。然后开始进行数据位置调换。
④ 结果输出
代码实现:
#include<stdio.h>
int main()
{
int x1=0,x2=0;
int a[11]={0};
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
int d1=a[0],d2=a[0];
//先找到最大的数,然后进行调换
for(int i=0;i<10;i++)
{
if(a[i]>d1)
{
d1=a[i];
x1=i;
}
}
int t=0;
t=a[0];
a[0]=d1;
a[x1]=t;
//接着找到最小的数,进行调换
for(int i=0;i<10;i++)
{
if(a[i]<d1)
{
d2=a[i];
x2=i;
}
}
t=a[9];
a[9]=d2;
a[x2]=t;
for(int i=0;i<9;i++)
{
printf("%d ",a[i]);
}
printf("%d",a[9]);
return 0;
}
值得注意的是,最后每个元素之间要间隔一个空格。