首页 > ACM题库 > HDU-杭电 > hdu 2016 数据的交换输出[解题报告]C++
2013
12-26

hdu 2016 数据的交换输出[解题报告]C++

数据的交换输出

问题描述 :

输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。

输入:

输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。

输出:

输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。

样例输入:

4 2 1 3 4
5 5 4 3 2 1
0

样例输出:

1 2 3 4
1 4 3 2 5

不解释。

#include <stdio.h>
int z[107];
int main()
{
    int temp,n;
    while (scanf("%d",&n),n)
    {
        int min;
        for (int a=0;a<n;a++)
        {
            scanf("%d",&z[a]);
        }
        min=z[0];
        for (int c=0;c<n;c++)
            if (z[c]<=min)
                min=z[c];
        temp=z[0];
        for (int b=0;b<n;b++)
        {
            if (z[b]==min)
            {
                z[b]=temp;
            }
            if (b==0)
            {
                z[b]=min;
            }
        }
        for (int d=0;d<n-1;d++)
            printf("%d ",z[d]);
        printf("%d\n",z[n-1]);
    }
    return 0;
}

解题转自:http://blog.csdn.net/crescent__moon/article/details/8559706


  1. 我还有个问题想请教一下,就是感觉对于新手来说,递归理解起来有些困难,不知有没有什么好的方法或者什么好的建议?