主题:如何判断一个整形是多少位数?
XVenus
[专家分:20] 发布于 2005-05-16 01:30:00
请问如何判断一个整形是多少位数?
回复列表 (共15个回复)
沙发
faintzw [专家分:2660] 发布于 2005-05-16 12:30:00
[lgn]+1
板凳
davidw017 [专家分:4170] 发布于 2005-05-16 17:23:00
这里提供两个办法,以下 integer 是要求长度的那个整数
1. log 法
Code in C/C++:
length = (int)log(integer) + 1;
Code in Pascal:
length := trunc(log(_integer)) + 1;
2. while 法
Code in C/C++:
length = 0;
while (integer > 0)
{
length++;
integer /= 10;
}
Code in Pascal:
length := 0;
while integer > 0 do begin
length := length + 1;
_integer := trunc(_integer / 10);
end;
这样 length 就是这个整数的长度。
3 楼
faintzw [专家分:2660] 发布于 2005-05-16 21:02:00
不瞒楼上的说,我还真不知道pascal里有log函数……呵呵
您那个程序可能通过运行吗?ms在pascal中只有用ln换底
4 楼
davidw017 [专家分:4170] 发布于 2005-05-16 21:19:00
你可以自己写一个么……没有关系……的确没有,我对 Pascal 不熟悉这里就是一个例子
5 楼
faintzw [专家分:2660] 发布于 2005-05-17 01:18:00
^_^
楼上的本来就只是一句,即使用换底也不能运行的。
另外,我想到了当年(也就去年)我拿N个语言写同一个简单程序(heap+dijkstra)……
终于发现那是很累的……完成C++,pascal,basic版的后,我决定不再这样……
在acm以前我打算一直用我的pascal了……
6 楼
jywilliam [专家分:250] 发布于 2005-05-17 13:30:00
为什么二楼的在LINUX下用LOG通不过呢,请问log包括在哪个头文件中?log(interger)+1;
7 楼
XVenus [专家分:20] 发布于 2005-05-17 16:35:00
ACM?现在距离我太遥远了,能问一下你是哪所高校的吗?
8 楼
faintzw [专家分:2660] 发布于 2005-05-17 21:34:00
我……高一……
9 楼
pony [专家分:10180] 发布于 2005-05-20 09:31:00
用LEN(123)测定结果:3
10 楼
JoCoFo [专家分:110] 发布于 2005-05-20 12:14:00
将整数转成字符串型,然后再LEN
我来回复