#include <stdio.h> int main() { int n = 0,data[100] = {0},i,j,min = 0,min_num = 0; while(scanf("%d",&n)!=EOF) { if(n==0) break; for(i = 0;i <100;i++) data[i] = 0; scanf("%d",&data[0]); for(j = 1,min = data[0],min_num = 0; j <n;j++)//自己测试的时候一直都是对 单步调试也是对 后来才发现怎么不对 // min_num = 0 这条语句加了 就AC了 可以想到当输入一个已经是升序的数组时候 这个时候就会出粗 min_num 已经有个非0值 { scanf("%d",&data[j]); if(min > data[j]) min = data[j],min_num = j; } data[min_num] = data[0]; data[0] = min; for(i = 0;i <n;i++) printf("%d%c", data[i], (i < n - 1 ? ' ' : '/n'));//最后一行不要空格 晕死 } return 0; } 题目不难 但是自己的代码确实是没有考虑周全 呵呵 告诫自己