首页
社区
课程
招聘
在不考虑负数的前提下,这个例子据说是利用 栈 来实现 一个整数的逆串 就是 把 整数12345 变成 字符串 54321----各位还有什么精简的代码能实现这个吗
发表于: 2009-3-2 10:56 5206

在不考虑负数的前提下,这个例子据说是利用 栈 来实现 一个整数的逆串 就是 把 整数12345 变成 字符串 54321----各位还有什么精简的代码能实现这个吗

2009-3-2 10:56
5206
function tdinttostr(avalue:longint):string;stdcall;
var
  chstack:array[0..10] of char ; //定义字符数组栈
  chsp:integer;
  i:integer;
begin
  chsp:=0;
  if avalue=0 then begin
    chstack[chsp]:='0';
    inc(chsp);
  end else begin
    while avalue<>0 do begin
      chstack[chsp]:=char(avalue mod 10+$30);
      inc(chsp);
      avalue:=avalue div 10;
    end;
  end;
  setlength(result,chsp);
  for i:=0 to chsp-1 do begin
    result[i+1]:=chstack[i];
  end;
end;

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
上面的代码竟然用了inttostr,那似乎就很简单了
2009-3-2 14:09
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
原文  不 是  没使用函数
是 我 调试原来程序 没成功  而后 改的 ,肯定是不妥的
2009-3-2 14:12
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
其实 这个 本意就是 自己实现 INTTOSTR 函数  只不过 加了 逆串这个过程
2009-3-2 14:16
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
这题目被你改得有点乱…
2009-3-2 14:21
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
char buf[10];
char* p = buf;
int a = 1234;
while ( a != 0 ) { *p++ = '0'+a % 10; a /= 10; }
*p = 0;
printf("%s\n", buf);
2009-3-2 14:27
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
7
//Delphi不大熟悉,不过VC、VB倒是会点。
CString ReverseLong(long x)
{
        CString str;
        while (x !=0)
        {
                str += (char)(x%10+0x30);
                x /=10;
        }
        return str;
}

'VB下面的反转
Private Function ReverseLong(ByVal x As Long) As String
   Dim s As String
   While x <> 0
        s = s & x Mod 10
        x = x / 10
   Wend
   ReverseLong = s
End Function
2009-3-2 14:39
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=sojoo;585919]char buf[10];
char* p = buf;
int a = 1234;
while ( a != 0 ) { *p++ = '0'+a % 10; a /= 10; }
*p = 0;
printf("%s\n", buf);[/QUOTE]

谢谢 ,这个好像和你的代码接近了吧
function tdinttostr(avalue:longint):string;stdcall;
var
  i:integer;
begin
  i:=1;
  setlength(result,10);
  while avalue<>0 do begin
    result[i]:=char(avalue mod 10+48);
    inc(i);
    avalue:=avalue div 10;
  end;
  result[i]:=#0;
end;
2009-3-2 14:45
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
6楼和7楼的代码都没用到  栈  这个咚咚
2009-3-2 14:49
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
// low->hig push 'stack'
*p++ = '0'+a % 10;
2009-3-2 16:21
0
游客
登录 | 注册 方可回帖
返回
//