欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

2023年 9月 GESP C++ 一级真题解析 编程题

时间:2024-05-16 19:26 作者:admin 点击:
三、编程题(每题 25 分,共 50 分) 1、买⽂具 问题描述 开学了,⼩明来到⽂具店选购⽂具。签字笔 2 元⼀⽀,他需要 X⽀;记事本 5 元⼀本,他需要 Y 本;直尺 3 元⼀把,他需要 Z 把

三、编程题(每题 25 分,共 50 分)

1、买⽂具

问题描述

开学了,⼩明来到⽂具店选购⽂具。签字笔 2 元⼀⽀,他需要 X⽀;记事本 5 元⼀本,他需要 Y 本;直尺 3 元⼀把,他需要 Z 把。⼩明⼿⾥有 Q 元钱。你通过编程帮⼩明算算,他⼿⾥的钱是否够买他需要的⽂具。

输入描述

输⼊4⾏。

第⼀⾏包含⼀个正整数 X ,是⼩明购买签字笔的数量。约定 1≤X≤10 。

第⼆⾏包含⼀个正整数 Y ,是⼩明购买记事本的数量。约定 1≤Y≤10 。

第三⾏包含⼀个正整数 Z ,是⼩明购买直尺的数量。约定 1≤Z≤10 。

第四⾏包含⼀个正整数 Q ,是⼩明⼿⾥的钱数(单位:元)。

输出描述

输出 2⾏。如果⼩明⼿⾥的钱够买他需要的⽂具,则第⼀⾏输出"Yes",第⼆⾏输出⼩明会剩下的钱数(单位:元); 否则,第⼀⾏输出"No",第⼆⾏输出⼩明缺少的钱数(单位:元)。

样例输入 1

1

1

1

20

样例输出 1

Yes

10

样例输入 2

1

1

1

5

样例输出 2

No

5

【题目大意】

1.已知买一个签字笔、记事本、直尺的价格,输入要买的数量和总钱数,问是否能够买到需要的数量。

【考纲知识点】

1.变量的定义与使用、选择结构、基本运算、输入输出语句。

【解题思路】

1.按题目要求定义好需要的变量,并实现输入;

2.根据单价求出购买这些数量的需要总钱数;

3.如果有的钱数大于等于需要的钱数,输出“Yes”和剩余的钱数;否则输出“No”和缺少的钱数。

【参考程序】

#include <iostream>
using namespace std;
int main(){
    int x,y,z,q;
    cin>>x>>y>>z>>q;
    int p=2*x+5*y+3*z;
    if(p<=q) cout<<"Yes\n"<<q-p;
    else cout<<"No\n"<<p-q;
    return 0;
}

【洛谷链接】 https://www.luogu.com.cn/problem/B3863

2、⼩明的幸运数

问题描述

所有个位数为 k 的正整数,以及所有 k 的倍数,都被⼩明称为“k 幸运数”。⼩明想知道正整数 L 和 R 之间(包括 L 和 R) 所有 k 幸运数的和,你能帮帮他吗?

输入描述

输⼊3⾏。第⼀⾏包含⼀个正整数 k,第⼆⾏包含⼀个正整数 L,第三⾏包含⼀个正整数 R。约定 2≤k≤9,1≤L≤R≤1000。

输出描述

输出 1⾏,符合题意的幸运数之和。

样例输入 1

7

1

10

样例输出 1

7

样例解释 1

1 和 10 之间共有 1 个 7 幸运数:7。因为 7 既是 7 的倍数,个位数⼜为 7。因此,结果为 7。

样例输入 2

7

10

20

样例输出 2

31

样例解释 2

10 和 20 之间共有 2 个 7 幸运数:14 和 17。14 是 7 的倍数,17 的个位数为 7。因此,结果为 31。

【题目大意】

1.求 1-n 之间所有的数字是否是幸运数字。

【考纲知识点】

1.变量的定义与使用、控制语句结构、逻辑运算、算术运算、输入输出语句等。

【解题思路】

1.按题目要求定义好需要的变量,并实现输入;

2.判断每个数字是否是幸运数字,各位是 7 或者是 7 的倍数;

3.是的话就累加,最终输出汇总结果。

【参考程序】

#include <iostream>
using namespace std;
int main(){
    int k,l,r;
    cin>>k>>l>>r;
    int ans=0;
    for(int i=l;i<=r;i++){
        if(i%10==k||i%k==0) ans+=i;
    }
    cout<<ans;
    return 0;
}

【洛谷链接】 https://www.luogu.com.cn/problem/B3864

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%