题解
购买图书
1 条题解
-
0
解题思路
这道题要先知道 5 种图书的单价,再根据购买数量算出总价。
图书单价表(元):
- 第 1 种书:28.90
- 第 2 种书:32.75
- 第 3 种书:45.60
- 第 4 种书:78.00
- 第 5 种书:35.70
我们用数组把单价存起来,再把每种书的本数乘上对应单价,加起来就是应付总费用。
有两个小技巧要注意:
- 题目要求用
printf和scanf输入输出,所以我们用<cstdio>头文件。 - 单价带小数,直接算浮点数容易有误差。我们先把"元"换算成"分"(乘 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