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

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

时间:2024-05-09 19:23 作者:admin 点击:
三、编程题(每题 25 分,共 50 分) 1. 时间规划 【问题描述】 小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗? 【输入描述】 输入 4

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

1. 时间规划

【问题描述】

小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?

【输入描述】

输入 4 行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。

输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用 24小时制,即小时在 0 到 23 之间,分钟在 0 到 59 之间。

【输出描述】

输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。

【样例输入 1】

9

5

9

6

【样例输出 1】

1

【样例输入 2】

9

5

10

0

【样例输出 2】

55

【题目大意】时间转换问题,输入开始时刻和结束时刻,时刻使用 24 小时制,保证两个时刻是同一天,且开始时刻一定在结束时刻之前,计算两者中间的时间,转化为分钟进行输出。

【考纲知识点】变量的定义与使用、顺序结构、基本运算、输入输出语句(一级)

【解题思路】

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

利用结束时刻的小时减开始时刻的小时,结果乘 60,得到小时数之差对应的分钟数;

利用结束时刻的分钟减开始时刻的分钟,得到分钟数之差;

将将上述结果相加并输出;

【参考程序】

#include <iostream>
using namespace std;
int main(){
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int t1=a*60+b;
    int t2=c*60+d;
    cout<<t2-t1;
    return 0;
}

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

2. 累计相加

【问题描述】

输入一个正整数𝐀,求形如:1 + 1 + 2 + 1 + 2 + 3 + 1 + 2 + 3 + 4 + …⋯(1 + 2 + 3 + 4 + 5 + …⋯𝐀)的累计相加。

【输入描述】

输入一个正整数。约定 1 ≤ 𝐀 ≤ 100。

【输出描述】

输出累计相加的结果。

【样例输入 1】

3

【样例输出 1】

10

【样例输入 2】

4

【样例输出 2】

20

【样例输入 3】

10

【样例输出 3】

220

【题目大意】多项式求和问题,多项式的每一项,都是从 1 开始,累加到当前项数结束。累加每项之和求出整个多项式的和。

【考纲知识点】循环结构、基本运算、输入输出语句(一级)

【解题思路】

1. 分析出参与求和运算的每一项的规律:第 1 项为 1,第 2 项从 1 开始加到 2,第 3 项从 1 开始加到 3,依次类推,第 i 项从 1 开始一直加到当前项数 i,利用求和公式可以表示为(i+1)*i/2;

2. 借助 for 循环,把每个多项式的结果累加到 sum 中;

3. 按要求完成输入和输出。解题过程中应注意变量 sum 初始化,循环条件 i <= n 是否包含等于情况,表达式(i+1)*i/2 的运算顺序等问题。

如果不了解等差数列求和公式,也可以使用二重循环解题,需要更加注意循环条件的处理。

【参考程序】

#include <iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int s=0,ans=0;
    for(int i=1;i<=n;i++){
        s+=i;
        ans+=s;
    }
    cout<<ans;
    return 0;
}

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

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