【2066】买图书

【题目描述】

已知小明有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 表示换行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

earthzhang2021

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值