【GESP】C++一级真题练习(202309)luogu-B3863,买文具
GESP一级真题练习。为2023年9月一级认证真题。属于数值计算+条件判断的问题。
luogu-B3863 买文具
题目要求
描述
开学了,小明来到文具店选购文具。签字笔 2 元一支,他需要 X 支;记事本 5 元一本,他需要 Y 本;直尺 3 元一把,他需要 Z 把。小明手里有 Q 元钱。请你通过编程帮小明算算,他手里的钱是否够买他需要的文具。
输入
第一行包含一个正整数,是小明购买签字笔的数量。约定 1≤X≤10。
第二行包含一个正整数,是小明购买记事本的数量。约定 1≤Y≤10。
第三行包含一个正整数,是小明购买直尺的数量。约定 1≤Z≤10。
第四行包含一个正整数 Q,是小明手里的钱数(单位:元)。
输出
输出 2 行。如果小明手里的钱够买他需要的文具,则第一行输出 Yes,第二行输出小明会剩下的钱数(单位:元);否则,第一行输出 No,第二行输出小明缺少的钱数(单位:元)。
输入样例-1
1
1
1
20
输出样例-1
Yes
10
输入样例-2
1
1
1
5
输出样例-2
No
5
题目分析
这道题目主要考察简单的数学计算。需要注意以下几点:
- 需要计算总花费:
- 签字笔单价2元,需要X支,花费2X元
- 记事本单价5元,需要Y本,花费5Y元
- 直尺单价3元,需要Z把,花费3Z元
- 总花费 = 2X + 5Y + 3Z
- 判断逻辑:
- 如果总花费小于等于Q元,则钱够用
- 输出Yes
- 输出剩余金额 = Q - 总花费
- 如果总花费大于Q元,则钱不够
- 输出No
- 输出缺少金额 = 总花费 - Q
- 如果总花费小于等于Q元,则钱够用
- 输入输出格式:
- 输入4个整数X、Y、Z、Q,每个数占一行
- 输出2行,第一行Yes/No,第二行剩余/缺少金额
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
using namespace std;
int main() {
// 定义变量存储签字笔、记事本、直尺的数量和小明的钱数
int first, second, third, money;
// 从标准输入读取四个整数
cin >> first >> second >> third >> money;
// 计算总花费:签字笔2元/支,记事本5元/本,直尺3元/把
int total_cost = first * 2 + second * 5 + third * 3;
// 判断钱是否足够
if (money >= total_cost) {
// 如果钱够,输出Yes和剩余金额
cout << "Yes" << endl;
cout << money - total_cost;
} else {
// 如果钱不够,输出No和缺少的金额
cout << "No" << endl;
cout << total_cost - money;
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP 学习专题站:GESP WIKI
“luogu-”系列题目可在洛谷题库进行在线评测。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
欢迎加入:Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答
欢迎加入:C++ GESP/CSP认证学习QQ频道,考试资源总结汇总
欢迎加入:C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助
本文由作者按照 CC BY-NC-SA 4.0 进行授权