202606-交税(luogu-B4552)

202606-交税(luogu-B4552)

GESP C++一级,2026年6月真题,基础运算和循环语句,难度⭐,洛谷难度入门

luogu-B4552 [GESP202606 一级] 交税

题目要求

题目描述

根据国家税收相关规定,劳务报酬需要按月预交个税,预交税率如下:

  1. 劳务报酬不超过 800800 的,不需要预交个税;
  2. 劳务报酬超过 800800 的,仅超过 800800 的部分按照 20%20\%(即 0.20.2)税率预交个税(不超过 800800 的部分不需要预交个税);

例如,月劳务报酬为 1000.01000.0,则按照规则 22 需要预交个税 (1000.0800.0)×20%=40.00(1000.0 - 800.0) \times 20\% = 40.00

现在给定小杨同学 1212 个月的月度劳务报酬,请帮小杨同学计算他这 1212 个月应预交个税的总和。

输入格式

输入 1212 行,每行一个浮点数,表示小杨同学 1212 个月中每个月的劳务报酬。

每个浮点数恰好有一位小数。

输出格式

输出 11 行,一个浮点数,保留两位小数,表示小杨同学 1212 个月应预交个税的总和。

输入输出样例 #1

输入 #1

932.0
1634.3
1790.4
2172.9
378.1
283.4
2761.9
3583.5
10.1
2324.9
1111.6
3812.3

输出 #1

2584.76

说明/提示

样例解释 1
  1. 932.0932.0 符合规则 22,超过 800800 的部分为 132.0132.0,按照 20%20\% 预交为 132.0×20%=26.40132.0 \times 20\% = 26.40
  2. 1634.31634.3 符合规则 22,超过 800800 的部分为 834.3834.3,按照 20%20\% 预交为 834.3×20%=166.86834.3 \times 20\% = 166.86
  3. 1790.41790.4 符合规则 22,超过 800800 的部分为 990.4990.4,按照 20%20\% 预交为 990.4×20%=198.08990.4 \times 20\% = 198.08
  4. 2172.92172.9 符合规则 22,超过 800800 的部分为 1372.91372.9,按照 20%20\% 预交为 1372.9×20%=274.581372.9 \times 20\% = 274.58
  5. 378.1378.1 符合规则 11,不需要预交个税;
  6. 283.4283.4 符合规则 11,不需要预交个税;
  7. 2761.92761.9 符合规则 22,超过 800800 的部分为 1961.91961.9,按照 20%20\% 预交为 1961.9×20%=392.381961.9 \times 20\% = 392.38
  8. 3583.53583.5 符合规则 22,超过 800800 的部分为 2783.52783.5,按照 20%20\% 预交为 2783.5×20%=556.702783.5 \times 20\% = 556.70
  9. 10.110.1 符合规则 11,不需要预交个税;
  10. 2324.92324.9 符合规则 22,超过 800800 的部分为 1524.91524.9,按照 20%20\% 预交为 1524.9×20%=304.981524.9 \times 20\% = 304.98
  11. 1111.61111.6 符合规则 22,超过 800800 的部分为 311.6311.6,按照 20%20\% 预交为 311.6×20%=62.32311.6 \times 20\% = 62.32
  12. 3812.33812.3 符合规则 22,超过 800800 的部分为 3012.33012.3,按照 20%20\% 预交为 3012.3×20%=602.463012.3 \times 20\% = 602.46

总和为 2584.762584.76

数据范围

小杨同学每月劳务报酬收入均为正,且恰好有一位小数,且不超过 4000.04000.0


题目分析

解题思路

本题的解题思路如下:

  1. 问题本质:

    • 输入 1212 个浮点数,代表每月的劳务报酬
    • 对每个月的报酬,按规则计算应预交的个税,最后求总和
  2. 解题关键 — 分段计算与累加:

    • 对于每个月的劳务报酬 xx:若 x800x \leq 800,该月个税为 00;若 x>800x > 800,该月个税为 (x800)×0.2(x - 800) \times 0.2
    • 1212 个月的个税累加即可
    • 输入是浮点数(带一位小数),需要使用 double 类型
    • 输出需要保留两位小数
  3. 复杂度分析:

    • 时间复杂度:O(1)O(1),固定循环 1212
    • 空间复杂度:O(1)O(1),只需要存储几个变量

示例代码

#include <cstdio>

int main() {
    // 用于累加12个月的个税总和
    double total = 0.0;
    // 循环读取12个月的劳务报酬
    for (int i = 0; i < 12; i++) {
        double salary;
        // 从标准输入读取当月劳务报酬
        scanf("%lf", &salary);
        // 如果报酬超过800,对超出部分按20%计算个税并累加
        if (salary > 800.0) {
            total += (salary - 800.0) * 0.2;
        }
    }
    // 输出12个月应预交个税总和,保留两位小数
    printf("%.2f\n", total);
    return 0;
}

本文由coderli.com原创,按照CC BY-NC-SA 4.0 进行授权

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

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP认证交流QQ群: 688906745

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
最后更新于