|  | 
 
 发表于 2024-10-27 12:42:31
|
显示全部楼层 
| 本帖最后由 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>
 | 
 |