C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。相关的知识,希望对你有一定的参考价值。
如何实现 n个整数
/*******************************
* 任意n个整数,将其中最小的数与第一个数对换
* ,把最大的数与最后一个数对换
* 2014-01-09 20:15 望采纳;)
*******************************
*/
#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;
追问
... 我主要想知道 有没有其他方法 不用设定100 啊 1000什么滴 ,除了用malloc 还有其他方法么
追答C99规范中可以定义动态数组,例如:
n = 5;int a[n];
n = 6;
int b[n];
首先确定你的编译器支持不支持C99。如果不行的话我在没有多好的办法,只能设为很大很大,或者malloc。望采纳;)
?这个怎么用呢 把这个程序写一下好么 大神
以上是关于C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。的主要内容,如果未能解决你的问题,请参考以下文章
C语言 输入10个数,将其中最小的数与第一个数对换,将最大的数与最后一个数对换
输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换