top1编程
← 返回题目
题解

购买图书

1 条题解

  • 0
    @ 2026-8-4 1:13:28

    解题思路

    这道题要先知道 5 种图书的单价,再根据购买数量算出总价。

    图书单价表(元):

    • 第 1 种书:28.90
    • 第 2 种书:32.75
    • 第 3 种书:45.60
    • 第 4 种书:78.00
    • 第 5 种书:35.70

    我们用数组把单价存起来,再把每种书的本数乘上对应单价,加起来就是应付总费用。

    有两个小技巧要注意:

    1. 题目要求用 printf 和 scanf 输入输出,所以我们用 <cstdio> 头文件。
    2. 单价带小数,直接算浮点数容易有误差。我们先把"元"换算成"分"(乘 100),全部用整数算,最后再除以 100 输出,这样既快又准。

    参考代码

    // 用途:购买图书,输入5种图书的购买本数,计算应付总费用(保留两位小数)
    // 单价表(元):28.90、32.75、45.60、78.00、35.70
    // 为防浮点误差,单价以"分"为单位存整数:2890、3275、4560、7800、3570
    #include <cstdio>
    int main() {
        int p[6] = {0, 2890, 3275, 4560, 7800, 3570}; // 5种书的单价(分)
        int a, sum = 0;
        for (int i = 1; i <= 5; i++) {
            scanf("%d", &a);          // 读入第i种书的购买本数
            sum += a * p[i];          // 累加这种书的金额
        }
        printf("%.2f
    ", sum / 100.0); // 把"分"换算成"元",保留两位小数
        return 0;
    }
    

    复杂度分析

    总共只有 5 种图书,循环次数固定是 5 次,所以时间复杂度是 O(1),空间复杂度也是 O(1)。无论买多少本书,程序都能立刻算完。

    • 1