解题思路:

注意事项:

/*这里的 EOF 是一个在 <stdio.h> 头文件中定义的宏,它表示文件结束符(End Of File)。
在标准输入中,通常通过按下 Ctrl+D(在 Unix/Linux 系统中)或 Ctrl+Z(然后回车,在 Windows 系统中)来生成 EOF 信号,
这会使 scanf 返回 EOF,从而结束循环。
这个循环会持续读取用户输入的整数,直到遇到 EOF 为止。
每次循环时,scanf 会尝试从标准输入读取一个整数并存储在变量 a 中。
如果读取成功,scanf 返回读取的项目数(在这个例子中为 1),如果遇到 EOF 或读取错误,则返回 EOF(通常是 -1)。
因此,循环会继续执行,直到遇到 EOF。
*/


参考代码:

#include <stdio.h>

//冒泡排序法函数
void bubbleSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n - 1; i++) {
        // 最后的i个已经排好了  
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换 arr[j] 和 arr[j+1]  
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

main() {
    
    int nums[10] = { 0 };
    while(scanf("%d",&nums[0]) != EOF) {
        for (int i = 1; i < 10; i++) {
            scanf("%d", &nums[i]);
        }
        int len_1 = 0;          //数组长度
        int len_2 = 0;
        int nums_1[10] = { 0 };     //定义两个数组分别存放奇数与偶数
        int nums_2[10] = { 0 };
        for (int i = 0; i < 10; i++) {
            if (nums[i] % 2 == 0) {
                nums_1[len_1] = nums[i];    //偶数
                len_1++;
            }
            else {
                nums_2[len_2] = nums[i];       //奇数
                len_2++;
            }
        }

        bubbleSort(nums_1, len_1);      //从小到大
        bubbleSort(nums_2, len_2);

        for (int i = len_2 - 1; i >= 0; i--) {
            printf("%d ", nums_2[i]);
        }
        for (int i = 0; i < len_1; i++) {
            printf("%d ", nums_1[i]);
        }
    }
	return 0;
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论