hdu 2016 数据的交换输出

数据的交换输出

问题描述

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

输入

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

输出

对于每组输入数据,输出交换后的数列,每组输出占一行。

样本输入

 

4 2 1 3 4

5 5 4 3 2 1 0

样本输出

 

1 2 3 4

1 4 3 2 5

问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2016

问题分析:

使用数组进行处理。

定义一个数组,将数据存放到数组中,选出最小数,记录最小数的下标,将最小数与第一个数交换,最后输出数组中的所有元素。

#include <stdio.h>
int main()
{
	int n,a[100],i,t,min;
	while(scanf("%d",&n)!=EOF)
	{
		if(n==0)
			break;         //结束判断 
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);    //定义一个数组,存放数据 
		}
		min=0;           //min用来存放最小数的下标 
		for(i=1;i<n;i++)
		{
			if(a[min]>a[i])      //用a[0]来与每个数比较 
				min=i;           //若a[i]<a[min],则将min赋值为i 
		}
		t=a[min];              //a[min]与a[0]交换位置 
		a[min]=a[0];
		a[min]=t;
		for(i=0;i<n;i++)        //输出a中的所有元素 
		{
			if(i!=0)
				printf(" ");     //按照规定格式输出 
			printf("%d",a[i]); 
		}
			printf("\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40967787/article/details/81073643