【题目描述】
已知小明有n元,他买了一本书,这本书原价为m元,现在打8折出售。求小明还剩多少钱(保留2位小数)。
【输入】
输入n,m。
【输出】
小明还剩多少钱(保留2位小数)。
【输入样例】
100 100
【输出样例】
20.00
【程序分析】
本题主要考察就是浮点数格式输出的使用
推荐用printf并熟练掌握%f的各种用法
对于是采用float还是double,要看题目对数范围和精度的要求,一般内存允许时采用double比较保险
【程序实现】
#include <iostream>
#include <iomanip> // 用于控制输出精度
using namespace std;
int main() {
double n, m; // 定义变量n(小明有的钱)和m(书原价)
cin >> n >> m; // 输入n和m
double cost = m * 0.8; // 计算打折后的价格:原价 × 0.8
double remaining = n - cost; // 计算剩余的钱:原有的钱 - 实际支付
// 输出结果,保留两位小数
cout << fixed << setprecision(2) << remaining << endl;
return 0;
}
减少中间变量版:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double n, m;
cin >> n >> m;
// 直接计算并输出结果
cout << fixed << setprecision(2) << n - m * 0.8 << endl;
return 0;
}
程序说明:
- 使用
double类型确保计算精度 - 打8折就是乘以0.8
fixed << setprecision(2)保证输出固定小数点后两位- 计算剩余金额:原有金额 - 实际支付金额
printf的实现
#include <cstdio> // 包含printf和scanf的头文件
int main() {
double n, m; // 定义变量n(小明有的钱)和m(书原价)
scanf("%lf %lf", &n, &m); // 输入n和m
double remaining = n - m * 0.8; // 计算剩余的钱
printf("%.2lf\n", remaining); // 输出结果,保留两位小数
return 0;
}
printf格式说明:
%.2lf表示输出double类型变量,保留2位小数%lf用于scanf读取double类型\n表示换行
243

被折叠的 条评论
为什么被折叠?



