ceil函数:
ceil:在英文中,是天花板的意思,有向上的意思,所以,此函数是向上取整。
用 法: double ceil(double x);
功 能: 返回大于或者等于指定表达式的最小整数
头文件: #include
说明:
float ceil ( float value )
返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。
#include
#include
int main()
{
double a = ceil(5.4);
printf("%d",(int)a);
return 0;
}
输出结果为:6
#include
#include
int main()
{
printf("%d",(int)ceil(5.4));
return 0;
}
输出结果:6
#include
#include
using namespace std;
int main()
{
cout << ceil(5.4);
return 0;
}
输出结果:6
【注意】下面的这种写法不对
#include
#include
int main()
{
printf("%d",ceil(5.4));
return 0;
}
输出结果:0
原因:因为ceil()函数的返回值为double类型,而我们输出的类型是%d类型,所以会出错。因此我们最好在ceil函数前面加一个强制类型转换,将ceil的值转为int类型。
int
int 是向下取整数.
#include
int main()
{
printf("%lf",5.7);
return 0;
}
输出结果:5.700000
#include
int main()
{
printf("%d",(int)5.7);
return 0;
}
输出结果:5
#include
#include
using namespace std;
int main()
{
cout << int(5.7);
return 0;
}
输出结果:5
注意:这样写会报错。
#include
int main()
{
printf("%d",5.7);
return 0;
}
也是因为5.7是小数类型的,而“%d”指的是整数,类型不一致,输出的结果可能是任意的数。
例题:
【苹果和虫子】
描述
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
输入
输入仅一行,包括n,x和y(均为整数)。输入数据保证y <= n * x。
输出
输出也仅一行,剩下的苹果个数
样例输入
10 4 9
样例输出
7
提示
注意:是要求完整的苹果数。
代码:
(用ceil函数)
#include
#include
int main()
{
double x,y;
int n;
scanf("%d%lf%lf",&n,&x,&y);
int k = ceil(y/x);
// printf("%d ",k);
printf("%d",n-k);
return 0;
}
(用int强制类型转换)
#include
int main()
{
double n, x, y;
scanf("%lf%lf%lf",&n,&x,&y);
// printf("%lf ",y/x);
int k = n - y/x;
printf("%d",k);
return 0;
}
或者:
#include
#include
int main()
{
double n,x,y;
scanf("%lf%lf%lf",&n,&x,&y);
printf("%d",(int)(n-y/x));
return 0;
}