提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@TOC7-16 然后是几点(15 分)
本文试图帮助到那些想通过本题训练思维的小白,为他们启发思维_(:з」∠)_
如果对此题一头雾水,建议直接跳转思路
本文不含高级解法
好了,自己当自己的省流小助手!
先放上代码:
#include <stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> int main(){
int shart,past; scanf ("%d %d",&shart,&past); int a,b; a=shart/100; b=shart%100; b=b+past; if(b>=0) {
while(b>=60){
b -=60; a++; } } else {
while(b<-60) {
b+=60; a--; } b=b+60; a--; } if(b<10){
printf("%d0%d",a,b); } else printf("%d%d",a,b); return 0; }
讯享网
思路
先放上原题

讯享网
首先分析输入输出格式
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。
—简单寻找加粗字体所代表的关键词,我们知道了这道题起码需要两个输入两个整数了
可别小看它,它帮助我们,我们打破了看着题目无从下手的状态
这是个好的开始
大概就是这个样子的`
讯享网scanf("%d %d",&x,&y);
然后是输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
由于一天只有24小时,这里又是前两位表示小时
运算正确的话,应该也不会超过四位数
C语言输出时本就不带前导零,所以这里实际对输出没啥要求
接下来是题干:
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
简单寻找关键词,我们就可以发现题目想让我们干什么和潜在的问题
我们需要对题目所给的两个数进行计算,计算时间点A经过一段时间后的时间点B,时间点B就是答案
‘当小时为个位数时`
显然,有不同的情况了,于是我们需要一个这样的分支:
if(x<10){
printf("%d0%d",x,y); } else printf("%d%d",x,y);
然后是可能是负数的应对方案
首先,我们先想想如果是正数该怎么计算?
很简单,加上去就好了呀
那负数呢?
EMM…在这题里好像没什么区别
我们好像顺便还把核心思路想好了hhh
————————————————————————————————
接下去是解题算法:
用当前时间加上经过分钟数
但第一个数字是时间+分钟四位数,显然不能直接相加
能不能想个办法让第一个数字身首异处?
更确切地说,让小时和分钟分开?
还真有,向下取整的除法可以把去除数字里最右边的x位

如13/10=1
取余可以保留最右边的x位
如13%10=3
本题中,我们可以先用两个变量储存输入,再用运算对第一个数字进行处理
讯享网int shart,past; scanf ("%d %d",&shart,&past); int a,b; a=shart/100;//此时a是第一个数字的前两位 b=shart%100;//b是第一个数字的后两位
拿测试用例模拟,就是这样的
然后就可以用b和第二个数字相加了~
b=b+past
这里我们把加完之后的结果放回保存在b里
加完之后是这样的

此时b超出60,显然不可以直接输出,于是自然想到进位
怎么进呢?
时间是逢六十进一,我们是逆过来,分钟减60的同时,别忘了给小时进一
那如果分钟数很大呢?显然我们需要做很多次,直到无法再进一为止
讯享网while(b>=60){
b -=60; a++; }
此时程序是这样的
int main(){
int shart,past; scanf ("%d %d",&shart,&past); int a,b; a=shart/100; b=shart%100; b=b+past; while(b>=60){
b -=60; a++; } if(b<10){
printf("%d0%d",a,b); } else printf("%d%d",a,b); return 0; }
然后拿到pta一测试,结果是这样的

负数不行?我们回想一下我们的逻辑:

哪里出了问题?
问题是负数就给他负数!
我们用1120 -110作为例子去过一遍流程(其实这里不用,一个分支猜都猜得出)
最后是这样子的

显然 ,-90不是能输出的结果
如果第二个输入为负数,相加后得到的分钟数不一定能大于60!
容易想到的方法就是再加一个判断是否是负数的分支
把思路变成这样

代码是这样子的:
讯享网 if(b>=0) {
while(b>=60){
b -=60; a++; } } else {
while(b<-60) {
b+=60; a--; } b=b+60; a--; }
其中,负数部分算法中,while循环执行结束后,b可能仍为负数
如我们的例子中,while循环执行结束后是这样的:

显然我们需要从小时数(a)中借一,让分钟数(b)回到整数的样子
于是就有了
此时程序是这样的:
#include <stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> int main(){
int shart,past; scanf ("%d %d",&shart,&past); int a,b; a=shart/100; b=shart%100; b=b+past; if(b>=0) {
while(b>=60){
b -=60; a++; } } else {
while(b<-60) {
b+=60; a--; } b=b+60; a--; } if(b<10){
printf("%d0%d",a,b); } else printf("%d%d",a,b); return 0; }
再次测试

好了,本文到此结束,希望能帮到大家
肯定有更好的算法,此处不再赘述,欢迎交流!
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、使用步骤
1.引入库
代码如下(示例):
讯享网import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv') print(data.head())
该处使用的url网络请求的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120244.html