1 条题解
-
0
C
说明
本题要求计算小明购买打折书籍后剩余的钱数,核心逻辑是“剩余金额 = 原有金额 - 书籍折后价格”。具体计算规则:
- 书籍原价为
m元,打8折后的售价 =m × 0.8; - 小明剩余的钱 = 原有金额
n- 书籍折后售价,即n - m×0.8; - 结果需保留2位小数,通过格式化输出实现四舍五入(如计算结果为20.0,需输出20.00)。
整个过程仅涉及一次乘法和一次减法,时间复杂度为O(1),使用
double类型存储数据可保证精度。代码
#include <stdio.h> int main() { double n, m; // 读取原有金额n和书籍原价m scanf("%lf %lf", &n, &m); // 计算剩余金额:n减去m的8折价格 double remaining = n - m * 0.8; // 输出保留2位小数的结果 printf("%.2f\n", remaining); return 0; }C语言拓展知识
推荐搜索:printf中
%.2f的格式化规则(如何强制显示两位小数,包括末尾的0)、double类型存储小数的精度限制、浮点数减法可能产生的精度误差及避免方法。C++
说明
本题逻辑与C语言一致(剩余金额 = 原有金额 - 折后价格),C++通过
fixed和setprecision(2)控制输出格式,确保结果保留2位小数,代码更简洁,无需重复指定格式控制符。新知识
- 强制保留两位小数:
- 术语:
fixed与setprecision(2)的组合 - 解释:
fixed指定浮点数以固定小数位数形式输出,setprecision(2)设置小数位数为2,两者结合后,即使结果是整数(如20),也会显示为20.00,符合题目对输出格式的要求。 - 对比:C语言用
printf("%.2f", remaining);C++通过操纵符组合实现,格式控制更灵活,便于修改小数位数(如改为3位只需改setprecision参数)。
- 术语:
AC
#include <bits/stdc++.h> using namespace std; int main() { double n, m; // 读取n和m(double类型直接用cin读取) cin >> n >> m; // 计算剩余金额 double remaining = n - m * 0.8; // 输出保留2位小数,确保显示两位小数(包括末尾0) cout << fixed << setprecision(2) << remaining << endl; return 0; }C++拓展知识
推荐搜索:C++中
fixed对输出格式的影响(为何能强制显示末尾0)、setprecision参数与小数位数的对应关系、浮点数在计算中的精度问题(如0.8的二进制存储误差对结果的影响)。 - 书籍原价为
- 1
信息
- ID
- 236
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 6
- 标签
- 递交数
- 149
- 已通过
- 47
- 上传者