西农OJ做题记录 NWAFU-S

题目描述

由键盘任意输入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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值