ACM一道小题 怎么会WA
想体验"组队比赛"的乐趣么? 四月份月赛(组队赛)已经开始报名了~***来加好友吧***,"HDOJ人人网公共主页"已经开通~
数据的交换输出
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28108 Accepted Submission(s): 10620
Problem Description
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1 2 3 4
1 4 3 2 5
程序代码:
#include<stdio.h> #define MAX 100 void swapArr(int arr[],int n) { int i; int t,idx; for(i=0,idx=0,t=arr[0];i<n;i++) { if(arr[i]<t) { t=arr[i]; idx=i; } } arr[0]+=arr[idx]; arr[idx]=arr[0]-arr[idx]; arr[0]=arr[0]-arr[idx]; } int main() { int n; int i; int arr[MAX]; while(scanf("%d",&n)!=EOF) { if(n==0) break; for(i=0;i<n;i++) { scanf("%d",&arr[i]); } swapArr(arr,n); for(i=0;i<n;i++) { printf("%d%c", arr[i], (i < n - 1 ? ' ' : '\n')); } } return 0; }