2025 年 9 月青少年软编等考 C 语言一级真题解析

目录

T1. 三角形面积

题目链接:SOJ D1416

给定三角形的底和高,求三角形的面积。

三角形的面积计算公式为:面积 = = = 底 × × × 高 ÷ 2 ÷ 2 ÷2。

时间限制:1 s

内存限制:256 MB

  • 输入
    一行,两个整数分别表示三角形的底和高,不超过 1000 1000 1000。

  • 输出
    一个数,表示三角形的面积:如果面积为整数,则输出整数形式;如果面积为小数,则输出小数形式。

  • 样例输入 1

    a 复制代码
    4 5
  • 样例输出 1

    a 复制代码
    10
  • 样例输入 2

    a 复制代码
    5 3
  • 样例输出 2

    a 复制代码
    7.5

思路分析

此题考查分支结构,属于入门题。

如果底乘高 为偶数,则三角形面积为整数,直接输出即可,否则应当控制输出保留 1 1 1 位小数。由于底和高都是整数,因此当底乘高 为奇数时,应当在代码中除以 2.0 2.0 2.0。

cpp 复制代码
/*
 * Name: T1.cpp
 * Problem: 三角形面积
 * Author: Teacher Gao.
 * Date&Time: 2026/01/08 01:17
 */

#include <cstdio>

using namespace std;

int main()
{
    int a, h;
    scanf("%d%d", &a, &h);

    if (a * h % 2 == 0) {
        printf("%d\n", a * h / 2);
    }
    else {
        printf("%.1f", a * h / 2.0);
    }

    return 0;
}

T2. 元音字母

题目链接:SOJ D1417

给定一个小写字母 c c c,判断 c c c 是否是元音字母。元音字母有: a \text{a} a、 e \text{e} e、 i \text{i} i、 o \text{o} o、 u \text{u} u。

时间限制:1 s

内存限制:256 MB

  • 输入
    输入一个小写字母。

  • 输出
    如果输入是元音字母,输出 Vowel,否则输出 Consonant

  • 样例输入 1

    a 复制代码
    a
  • 样例输出 1

    a 复制代码
    Vowel
  • 样例输入 2

    a 复制代码
    t
  • 样例输出 2

    a 复制代码
    Consonant

思路分析

此题考查分支结构与逻辑运算,属于入门题。

根据题意进行判断输出即可, 5 5 5 个元音字母的判断逻辑用逻辑或(||)进行连接。

cpp 复制代码
/*
 * Name: T2.cpp
 * Problem: 元音字母
 * Author: Teacher Gao.
 * Date&Time: 2026/01/08 01:33
 */

#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false), cin.tie(0);

    char c;
    cin >> c;

    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
        cout << "Vowel\n";
    }
    else {
        cout << "Consonant\n";
    }

    return 0;
}

T3. 制作咖啡

题目链接:SOJ D1418

有一台咖啡机每启动运行 A A A 秒后生成 B B B 杯咖啡(即在时刻 A , 2 A , 3 A , ... A, 2A, 3A, \dots A,2A,3A,... 生成咖啡)。

给定咖啡机总运行时间 T T T 秒,请计算生成的咖啡总杯数。

时间限制:1 s

内存限制:256 MB

  • 输入
    一行,三个整数: A A A, B B B, T T T, 1 ≤ A , B , T ≤ 10 4 1 \leq A, B, T \leq 10^4 1≤A,B,T≤104。

  • 输出
    一个整数,表示咖啡总杯数。

  • 样例输入 1

    a 复制代码
    80 90 170
  • 样例输出 1

    a 复制代码
    180
  • 样例输入 2

    a 复制代码
    100 50 100
  • 样例输出 2

    a 复制代码
    50
  • 样例输入 3

    a 复制代码
    3 5 7
  • 样例输出 3

    a 复制代码
    10
  • 样例输入 4

    a 复制代码
    20 20 19
  • 样例输出 4

    a 复制代码
    0

思路分析

此题考查算术运算,属于入门题。

根据题意, t t t 秒内咖啡机可以启动 ⌊ t / a ⌋ \lfloor t/a\rfloor ⌊t/a⌋ 次,因此总共可以生成 ⌊ t / a ⌋ × b \lfloor t/a\rfloor\times b ⌊t/a⌋×b 杯咖啡,C++ 表达式 t / a * b 即为答案,注意运算顺序不要写反了。

cpp 复制代码
/*
 * Name: T3.cpp
 * Problem: 制作咖啡
 * Author: Teacher Gao.
 * Date&Time: 2026/01/08 01:39
 */

#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false), cin.tie(0);

    int a, b, t;
    cin >> a >> b >> t;

    cout << t / a * b << endl;

    return 0;
}

T4. 闯关得分

题目链接:SOJ D1419

每一名选手有三次挑战机会,每次挑战会获得一个得分。最终得分规则为:取三次挑战中得分最高的两次,将这两次的得分相加,作为该选手的最终得分。

现给定该选手三次挑战的得分,请计算并输出其最终得分。

时间限制:1 s

内存限制:256 MB

  • 输入
    一行包含三个整数,分别表示三次挑战的得分,整数之间用空格分隔。每次挑战的得分均为 0 0 0 到 100 100 100 之间的整数(包含 0 0 0 和 100 100 100)。

  • 输出
    一个整数,表示选手的最终得分。

  • 样例输入 1

    a 复制代码
    80 90 70
  • 样例输出 1

    a 复制代码
    170
  • 样例输入 2

    a 复制代码
    100 50 100
  • 样例输出 2

    a 复制代码
    200

思路分析

此题考查分支结构的应用,属于基础题。

只需要找出其中的最小值,把另外两个数值相加即为答案。利用打擂台思想,先假设 a a a 是最小值,如果 b < a b < a b<a 就交换 a , b a,b a,b 的值,同理,在 c < a c<a c<a 的情况下交换 a , c a,c a,c 的值。最终 a a a 就是三个数值中的最小值,而 b + c b+c b+c 就是答案。

cpp 复制代码
/*
 * Name: T4.cpp
 * Problem: 闯关得分
 * Author: Teacher Gao.
 * Date&Time: 2026/01/08 01:44
 */

#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false), cin.tie(0);

    int a, b, c;
    cin >> a >> b >> c;

    if (b < a) swap(a, b);
    if (c < a) swap(a, c);

    cout << b + c << endl;

    return 0;
}

T5. 奇数偶数对

题目链接:SOJ D1420

给定一个正整数 K K K,求满足以下条件的整数对 ( x , y ) (x,y) (x,y) 的数量:

  • 1 ≤ x ≤ K 1≤x≤K 1≤x≤K,且 x x x 为奇数;
  • 1 ≤ y ≤ K 1≤y≤K 1≤y≤K,且 y y y 为偶数。

时间限制:1 s

内存限制:256 MB

  • 输入
    一个整数 K K K, 1 ≤ K ≤ 10 4 1 \leq K \leq 10^4 1≤K≤104。

  • 输出
    一个整数,表示满足条件的数对数量。

  • 样例输入 1

    a 复制代码
    3
  • 样例输出 1

    a 复制代码
    2
  • 样例输入 2

    a 复制代码
    5
  • 样例输出 2

    a 复制代码
    6
  • 样例输入 3

    a 复制代码
    50
  • 样例输出 3

    a 复制代码
    625

思路分析

此题考查算术运算,属于入门题。

在 1 ∼ k 1\sim k 1∼k 范围内,偶数有 ⌊ k / 2 ⌋ \lfloor k / 2\rfloor ⌊k/2⌋ 个,而奇数有 ⌈ k / 2 ⌉ \lceil k / 2\rceil ⌈k/2⌉ 个,满足条件的数对个数为奇数数量与偶数数量的乘积。关于向上取整的操作,前面已经用过很多次了,在 2025 年 6 月一级第四题的思路解析中给出了计算公式,此处不再赘述。

cpp 复制代码
/*
 * Name: T5.cpp
 * Problem: 奇数偶数对
 * Author: Teacher Gao.
 * Date&Time: 2026/01/08 01:55
 */

#include <iostream>

using namespace std;

int main()
{
    ios::sync_with_stdio(false), cin.tie(0);

    int k;
    cin >> k;

    cout << (k / 2) * ((k + 1) / 2) << endl;

    return 0;
}
相关推荐
玛丽莲茼蒿2 小时前
javaSE 集合框架(五)——java 8新品Stream类
java·开发语言
wjs20242 小时前
SQLite Glob 子句详解
开发语言
youyicc2 小时前
Qt连接Pg数据库
开发语言·数据库·qt
量子炒饭大师2 小时前
【C++入门】Cyber底码作用域的隔离协议——【C++命名空间】(using namespace std的原理)
开发语言·c++·dubbo
froginwe112 小时前
PHP 魔术常量
开发语言
古城小栈2 小时前
Rust 的 validator 库
开发语言·后端·rust
froginwe112 小时前
《Foundation 选项卡:设计与实现的深入探讨》
开发语言
lsx2024062 小时前
XSLT `<sort>` 标签详解
开发语言
古城小栈2 小时前
Rust 的 redis-rs 库
开发语言·redis·rust