|
发表于 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>
复制代码 |
|