九度OJ 1053:互换最大最小数 (基础题)

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:6613

解决:2676

题目描述:

输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。

输入:

测试数据有多组,输入n(1<=n<=20),接着输入n个数。

输出:

对于每组输入,输出交换后的结果。

样例输入:
2
1 3
样例输出:
3 1
来源:
2010年哈尔滨工业大学计算机研究生机试真题

思路:

遍历数组的过程中记录最大数和最小数并记录位置,然后调换即可。


代码:

#include <stdio.h>
 
int main(void)
{
    int n, a[20];
    int i, max, min;
 
    while (scanf("%d",&n) != EOF)
    {
        if (n<1 || n>20)
            return 0;
 
        for (i=0; i<n; i++)
            scanf("%d", &a[i]);
 
        for (i=0; i<n; i++)
        {
            if (i==0)
            {
                max = 0;
                min = 0;
                continue;
            }
            if (a[i] > a[max])
                max = i;
            if (a[i] < a[min])
                min = i;
        }
 
        int tmp;
        tmp = a[min];
        a[min] = a[max];
        a[max] = tmp;
 
        for (i=0; i<n; i++)
        {
            printf("%d", a[i]);
            if (i!=n-1)
                printf(" ");
        }
        printf("
");
    }
 
    return 0;
}
/**************************************************************
    Problem: 1053
    User: liangrx06
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:912 kb
****************************************************************/


编程算法爱好者。
原文地址:https://www.cnblogs.com/liangrx06/p/5083978.html