本帖最后由 jackz007 于 2024-10-27 19:43 编辑 #include <stdio.h>
int main(void)
{
int b , d[1000] , i , j , k , n = 0 ;
do {
scanf("%d" , & d[n ++]) ;
} while(getchar() != '\n') ;
for(b = i = 0 ; i < n ; i ++) {
if(d[i] % 2) {
if(i > b) {
k = d[i] ; // d[i] 即将被删除,先对 d[i] 备份
for(j = i + 1 ; j < n ; j ++) d[j - 1] = d[j] ; // 从 d[i + 1] 起,全部元素整体向前移动一个元素,从数组中删除 d[i]
for(j = n - 1 ; j > b ; j --) d[j] = d[j - 1] ; // 从 d[b] 起,全部元素整体向后移动一个元素,空出 d[b]
d[j] = k ; // 把备份的 d[i] 移入 d[b]
}
b ++ ;
}
}
printf("%d" , d[0]) ;
for(int i = 1 ; i < n ; i ++) printf(",%d" , d[i]) ;
printf("\n") ;
}
编译运行实况:D:\[exercise]\C>g++ -o x x.c
D:\[exercise]\C>x
1,2,33,8,5
1,33,5,2,8
D:\[exercise]\C>x
5,4,3,2,1,6,7,8,9,10,11
5,3,1,7,9,11,4,2,6,8,10
D:\[exercise]\C>
|