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。望采纳;)

参考技术A 用数组即可 int a[100]; 参考技术B while(scanf("%d",&a))追问

?这个怎么用呢 把这个程序写一下好么 大神

以上是关于C语言.任意n个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。的主要内容,如果未能解决你的问题,请参考以下文章

C语言 输入10个数,将其中最小的数与第一个数对换,将最大的数与最后一个数对换

输入10个整数,将其中最小的数与第一个数对换, 把最大的数与最后一个数对换

C语言问题 怎么做?

小朋友学C语言(27):选择排序

嗯嗯 用c语言编写从键盘输入10个整数,将最小值与第一个数交换,最大值与最后一个交换,然后输出交换后的数

C语言数组问题