文章

【GESP】C++三级练习 luogu-B3661, [语言月赛202209] 排排队

三级知识点一维数组练习,除了应用了数组以外,其余逻辑比较简单,适合初学者。

luogu-B3661

题目要求

描述

在幼儿园中有 $n$ 个小朋友,每个小朋友都有一个学号。

老师的要求是:学号为奇数的小朋友站一排,学号为偶数的小朋友站一排。

提示:

奇数:个位数为 $1, 3, 5, 7, 9$ 的数字,满足除以 $2$ 的余数为 $1$。

偶数:个位数为 $0, 2, 4, 6, 8$ 的数字,满足除以 $2$ 的余数为 $0$。

输入

共两行,第一行一个数字 $n$,表示有 $n$ 个小朋友。

第二行共 $n$ 个数字,其中第 $i$ 个数字 $a_i$ 表示第 $i$ 个小朋友的学号。

输出

共两行,第一行一些数字,表示学号为奇数的小朋友的学号,按照输入的顺序输出。即,如果一个数字输入的时候在前,那么输出的时候也应当在前。

第二行一些数字,表示学号为偶数的小朋友的学号,按照输入的顺序输出。

保证小朋友的学号既有奇数,又有偶数。

输入样例-1

5
1 2 3 4 5

输出样例-1

1 3 5
2 4

输入样例-2

5
5 2 3 1 4

输出样例-2

5 3 1
2 4


题目分析

  • 读取小朋友数量n的值
  • 读取n个小朋友的学号,存储到数组中
  • 遍历数组中的学号
  • 输出学号为奇数的小朋友的学号
  • 换行
  • 输出学号为偶数的小朋友的学号

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int main() {
    int n;  // 读取数组长度
    cin >> n;
    int* input_array = new int[n];  // 动态分配数组空间
    for (int i = 0; i < n; i++) {
        cin >> input_array[i];  // 读取数组元素
    }
    // 打印奇数
    for (int i = 0; i < n; i++) {
        if (input_array[i] % 2 != 0) {
            cout << input_array[i] << " ";
        }
    }
    cout << endl;  // 换行,分隔奇数和偶数
    // 打印偶数
    for (int i = 0; i < n; i++) {
        if (input_array[i] % 2 == 0) {
            cout << input_array[i] << " ";
        }
    }
    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

本文由作者按照 CC BY 4.0 进行授权