c语言p1=&a_c++编程题库

c语言p1=&a_c++编程题库提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档@TOC7-16然后是几点(15分)本文试图帮助到那些想通过本题训练思维的人,自己当自己的省流小助手!先放上代码:intmain(){intshart,pa

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@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)回到整数的样子
于是就有了

b+=60;
a–;

此时程序是这样的:

#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网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

今天的文章c语言p1=&a_c++编程题库分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85457.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注