一、对调最大值和最小值的位置
思路:就是通过比较元素的大小,找到最大值最小值,找到之后并记录其下标,然后找个临时变量交换最大值与最小值,最后打印出来就ok了。
例如:输入五个数,1、2、3、4、5,最后打印的结果应该是5、2、3、4、1
具体代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a[5], i, m=0,n=0, max, min;
int tem = 0;
printf("please input five nums:");
for (i = 0; i < 5; i++)
{
scanf("%d", &a[i]);
}
max = a[0];
for ( i =1 ; i < 5; i++)
{
if (a[i]>max)
m = i;
}
min = a[0];
for (i = 1; i < 5; i++)
{
if (a[i] < min)
n = i;
}
printf("max = %d min = %d\n", a[m], a[n]);
tem = a[m];
a[m] = a[n];
a[n] = tem;
printf("交换后的元素顺序为:");
for (i = 0; i < 5; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
运行结果如下:
上面的代码其实并不是很完美,也可以在输入的时候就加入判断,当输入结束后就能找到最大值和最小值并定位其位置,而且还可以用指针完成交换两个值更方便。
运行环境为VS2013,如有不足之后还请多多指正