题目描述
由键盘任意输入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、x1,将其下标分别存入d2、x2;
③ 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2;否则将其与x1比较,若比x1小,将其存入x1,并将其下标存入x2;
④ 结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。
代码实现
方法一:
#include<stdio.h>
int main()
{
int a[10];
int i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
int d1=a[0],d2=a[9];
int t1=0,t2=9;
for(i=0;i<10;i++)
{
if(d1<a[i])
{
d1=a[i];
t1=i;
}
}
int max;
max=a[0];
a[0]=d1;
a[t1]=max;
for(i=0;i<10;i++)
{
if(d2>a[i])
{
d2=a[i];
t2=i;
}
}
int min;
min=a[9];
a[9]=d2;
a[t2]=min;
for(i=0;i<9;i++)
{
printf("%d ",a[i]);
}
printf("%d",a[9]);
return 0;
}
方法二:
#include<stdio.h>
int main()
{
int a[10];
int i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
int d1=a[0];/*d1=max,d2=min*/
int t1=-1,t2=-1;
for(i=0;i<10;i++)
{
if(d1<a[i])
{
d1=a[i];
t1=i;
}
}
int max;
if(t1!=-1){
max=a[0];
a[0]=d1;
a[t1]=max;
}
int d2=a[9];
for(i=0;i<10;i++)
{
if(d2>a[i])
{
d2=a[i];
t2=i;
}
}
int min;
if(t2!=-1)
{
min=a[9];
a[9]=d2;
a[t2]=min;
}
for(i=0;i<9;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[9]);
return 0;
}