本文主要是介绍【c++笔记】有关计算时间的操作?!(新手速进),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天主要是向大家介绍c++有关计算时间的两个函数以及输出技巧,运用函数的方法似乎更加简便高效,希望对您有所帮助。
目录
一、内容简介
二、正文部分
2-1 ceil与floor函数的介绍
1.ceil函数
2、floor函数
2-2 %-2d,%02d等的意义
三、例题
四、结语
一、内容简介
①ceil与floor的函数介绍+常用输出技巧
②有关时间计算的两个问题
二、正文部分
2-1 ceil与floor函数的介绍
1.ceil函数
|①向上取整数
ceil函数可以对小数进行向上取整操作,只需将要取整的小数作为ceil函数的入参即可,如:
#include <bits/stdc++.h> using namespace std; int main(){double num = 3.1;int n=ceil(num);printf("向上取整后得到的结果为:%d", n); }
结果为
|②向上取整小数位数
对于小数,ceil函数的用途更加广泛,它不仅可以将小数向上取整到整数位,还可以将小数的某一位向上取整,如下面的代码所示:
#include <bits/stdc++.h> using namespace std; void main(){double num = 3.1415926;printf("向上取整后得到的结果为:%f", ceil(num*100)/100.0); }
结果为:
|③ 向上取整特殊边界值
在进行向上取整操作时,有时会遇到特殊的边界值,在处理这些值时需要特殊考虑:
向上取整零值
当要取整的值为零时,结果仍为零,因为它已经是整数了
#include <bits/stdc++.h> using namespace std; void main(){double num = 0;printf("向上取整后得到的结果为:%f", ceil(num)); }
向上取整正负零值
当要取整的数值为正零或负零时,它们被视为相同的数值,结果仍为零。
#include <bits/stdc++.h> using namespace std; void main(){double num1 = 0;double num2 = -0.0;printf("num1和num2向上取整后的值分别为:%f, %f", ceil(num1), ceil(num2)); }
向上取整无限大值
当要取整的值为正无穷大时,结果也为正无穷大;当要取整的值为负无穷大时,结果为负无穷大。
#include <stdio.h> #include <math.h> void main(){double num1 = INFINITY;double num2 = -INFINITY;printf("num1和num2向上取整后的值分别为:%f, %f", ceil(num1), ceil(num2)); }
2、floor函数
|① 取整
floor 函数主要用于对实数进行取整。对于一个实数 x,
floor()的计算方法是将x向下取整到最近的整数。例如:f1oor (2.3)= 2,£1oor(3.9)=3,f100r(-2.3)=-3e
|②辗转相除法
辗转相除法(又称欧几里德算法)是求两个数的最大公约数的一种方法,它使用到了 floor 函数。辗转相除法的基本思想是:将较大的数除以较小的数得到余数,然后再用较小的数去除以余数,直到余数为止。此时,较小的数即为原来两个数的最大公约数。
|③求商和余数
在进行除法计算时,通常需要求商和余数。对于两个非零整数a 和b,我们可以通过如下方法求它们的商和余数:
q= floor(a/ r)
r= a - bq
例如:
如果a=7,b=3,那么q= floor(7/3)=2,r=7-2*3=1。
2-2 %-2d,%02d等的意义
以下代码你都能准确说出他们所代表的意义吗?
#include <bits/stdc++.h>
using namespace std;
int main()
{int a=1;printf("%d\n",a);printf("%.2d\n",a);printf("%02d\n",a);printf("%-2d\n",a);return 0;
}
结果如下:
意义如下:
|①%.2d和%02d
2代表宽度,这两者的意义相同,指的是若不满足宽度则往前面补0
|②%-2d
2代表宽度,此时表示不满足宽度时往后面补0
三、例题
代码如下:
#include <bits/stdc++.h>
using namespace std;
int a1=24*60;//至少不超过一天,所以这里设置a1是提前一天的时间,a2是表示第二天8点
int a2=8*60;
int main()
{int s,v;cin>>s>>v;int t=ceil((1.0*s)/v);//向上取最大整数 t+=10;//丢垃圾的10分钟 if(t<=a2){a2=a2-t;printf("%02d:%02d",a2/60,a2%60);}else{a1=a1+a2-t;printf("%02d:%02d",a1/60,a1%60);}return 0;
}
四、结语
本次文章主要介绍了如何巧妙地用函数简单的解决时间问题,是值得c++入门选手参考的做题方式,希望对您有所帮助,如果有更好见解,欢迎来私信或者评论区进行讨论
希望能帮到您,蟹蟹~我们下次见~┏(^0^)┛
这篇关于【c++笔记】有关计算时间的操作?!(新手速进)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!