C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.如何实现 n个整数
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 00:14:40
![C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.如何实现 n个整数](/uploads/image/z/6844295-47-5.jpg?t=C%E8%AF%AD%E8%A8%80.%E4%BB%BB%E6%84%8Fn%E4%B8%AA%E6%95%B4%E6%95%B0%2C%E5%B0%86%E5%85%B6%E4%B8%AD%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0%E4%B8%8E%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%95%B0%E5%AF%B9%E6%8D%A2%2C%E6%8A%8A%E6%9C%80%E5%A4%A7%E7%9A%84%E6%95%B0%E4%B8%8E%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E6%95%B0%E5%AF%B9%E6%8D%A2.%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0+n%E4%B8%AA%E6%95%B4%E6%95%B0)
C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.如何实现 n个整数
C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.
如何实现 n个整数
C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.如何实现 n个整数
/*
*/
#include <stdio.h>
#define MAXSIZE 100
#define MAX(a, b) (a) >= (b) ? 1 : 0
//判断a是否大于b
#define MIN(a, b) (a) <= (b) ? 1 : 0
//判断a是否小于b
int main(void)
{
int i, n, dat[MAXSIZE];
int x = 0, y = 0;
int max = 0, min = 0X0FFFFFFF;
printf("\n请输入n( n < 100 ):");
scanf("%d", &n);
printf("\n请输入%d个数据:\n", n);
for (i = 0; i < n; i++)
{
scanf("%d", dat + i); //输入
if ( MAX(dat[i], max) )
{
max = dat[i]; //刷新最大值
x = i; //保存最大数在第几位
}
else if ( MIN(dat[i], min) )
{
min = dat[i];//刷新最小值
y = i; //保存最小数在第几位
}
}
if ( (x == (n - 1)) && (y == 0) ){
//如果 最大数在最末位且最小为在最前为
}
else if ( y == (n - 1) )
{
//如果 最小数在最末尾
y = x;
dat[n - 1] = dat[n - 1] ^ dat[x];
dat[x] = dat[n - 1] ^ dat[x];
dat[n - 1] = dat[n - 1] ^ dat[x]; //交换
dat[0] = dat[0] ^ dat[y];
dat[y] = dat[0] ^ dat[y];
dat[0] = dat[0] ^ dat[y]; //交换
}
else
{
dat[n - 1] = dat[n - 1] ^ dat[x];
dat[x] = dat[n - 1] ^ dat[x];
dat[n - 1] = dat[n - 1] ^ dat[x]; //交换
dat[0] = dat[0] ^ dat[y];
dat[y] = dat[0] ^ dat[y];
dat[0] = dat[0] ^ dat[y]; //交换
}
printf("\n处理后的结果:");
for (i = 0; i < n; i++){
printf(" %d", dat[i]);
}//输出
return 0;
}