读书人

向下取整和向上取整的有关问题

发布时间: 2013-01-07 10:02:24 作者: rapoo

向上取整和向下取整的问题
linux一站式上的问题

假设变量x和n是两个正整数,我们知道x / n这个表达式的结果取Floor,
例如x是17,n是14,则结果是4,如果希望结果取celling应该怎么写表达式呢?

(例如x是17,n是14,着结果是5,x是16,n是4,则结果是4.)

PS:向下取整运算符称为Floor.
向下取整运算符称为Ceiling

我写的代码:


# include "stdafx.h"

int main(void) {

int a = 0, b = 0;

scanf("%d %d", &a, &b);

if(0 == a % b) {
printf("%d\n", a / b);
}
else {
printf("%d\n", a / b + 1);
}

}


可以运行,结果好像也没什么问题,但是宋劲衫老师说只需要用到一个+号就可以了。我想不出那种方法。
不知道谁能够写出更好的代码。
[解决办法]
a / b + 1就是了,对于整数除法默认为向下取整的环境,将结果+1就是向上取整了。

不过,实际使用中想写出移植性高的代码,你就不能以向下取整作为默认行为,应该先用一段简单代码检测是哪种取整方法,再分别处理。
[解决办法]
(a + b - 1) / b

读书人网 >C语言

热点推荐