#include
#include
#include
int main()
{
int n,min,i;
while(scanf("%d",n)!=EOF&&n!=0){
min=0;
int *a=malloc(sizeof(int)*n);
memset(a,0,sizeof(int)*n);
for(i=0;iscanf("%d",&a[i]);
min=a[i]for(i=0;iif(a[i]==min)a[i]=a[0];
printf(i==0?"%d":" %d",i==0?min:a[i]);
}
free(a);
printf("\n");
}
printf("END!");
return 0;
}
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
int main()
{
int n, min, i, k;
while (scanf("%d", &n) == 1 && n != 0) { //scanf("%d", n) 修改
min = INT_MAX; k = 0;
int* a = (int*)malloc(sizeof(int) * n); //int *a=malloc(sizeof(int)*n); 修改
memset(a, 0, sizeof(int) * n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
min = a[i] < min ? (k = i, a[i]) : min; // 修改
}
if (k != 0) { // 修改
min = a[k]; a[k] = a[0]; a[0] = min; // 修改
}
for (i = 0; i < n; i++)
printf(i == 0 ? "%d" : " %d", a[i]); // 修改
printf("\n");
free(a);
}
printf("END!");
return 0;
}
min=0;
如果最小值初始化为0,你输入的都是大于0的数,那min会一直是0的。所以min应该初始化为一个很大的值才对,比如min = 0x7FFFFFFF;