? ? ? ?今天主要是向大家介绍c++有关计算时间的两个函数以及输出技巧,运用函数的方法似乎更加简便高效,希望对您有所帮助。
目录
①ceil与floor的函数介绍+常用输出技巧
②有关时间计算的两个问题
|①向上取整数
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)); }
|①?取整
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。??
以下代码你都能准确说出他们所代表的意义吗?
#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^)┛
?