思路写的太混乱了,有空整理一下 #include<stdio.h> #include <malloc.h> int main(){ int n,m; while(scanf("%d %d",&n,&m) != EOF && n!= 0 && m !=0){ int *p = malloc(sizeof(int)*n); for(int i=0;i<n;i++){ scanf("%d",p+i); } int flag = 0; for(int i=0;i<n;i++){ if(*(p+i) < m){ printf("%d",*(p+i)); }else if(*(p+i)>=m){ if(flag != 1){ printf("%d",m); printf(" %d",*(p+i)); flag = 1; }else{ printf("%d",*(p+i)); } } if(i ==n-1 ){ printf("\n"); }else{ printf(" "); } } } }