有人考我字符串逆序的算法,我居然写不上来,懊恼死了。
当时脑海里想的是用堆栈的算法,可是又不会写,至于递归,硬是没想到。
题目:实现字符串逆序函数 reverse(char *str)
答案:
1。最简单的,不一定规范但能实现。
void
reverse(
char
*
str) 
...
{
if (!*str) return;
fun(str+1);
printf("%c",*str);
}
2。比较规范的C
char
*
reverse(
char
*
cpSource) 
...
{
static char *cpTemp = NULL;
if(cpTemp == NULL) cpTemp = cpSource;
if(*(cpSource+1)) reverse(cpSource+1);
if(cpSource-cpTemp > 0) 
...{
char cTemp = *cpTemp;
*cpTemp++ = *cpSource;
*cpSource = cTemp;
}
return cpSource;
}
3。另外找了个ARM汇编的版本
data segment
string1 db
'
abcdefg
'
count equ $
-
string1
string2 db count dup(
?
),
'
$
'
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,count
mov si,offset string1
add si,cx
dec si
mov di,offset string2
lop1: mov al,[si]
mov [di],al
dec si
inc di
loop lop1
mov dx,offset string2
mov ah,
9
int
21h
mov ah,4ch
int
21h
code ends
end start
附:参考地址
这里就给汇编的,C的太多了,随便搜搜就能找到。
『Win32/Win64编程』 > 【讨论】来个简单题目,看哪位兄弟写的最好!
基本汇编语言程序设计 - 字符串逆序显示
本文提供了三种不同的字符串逆序实现方式,包括递归方法、规范化的C语言版本以及ARM汇编语言版本,每种方法都有其特点,适用于不同场景。
3861





