51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6979|回复: 3
打印 上一主题 下一主题

[讨论] 求助C语言中字符串倒置算法!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-5-12 16:31:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题!有知道的帮个忙。把算法详细的说明一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-5-13 17:13:12 | 只看该作者

是指这个吗?

编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
函数头是这样的:

//pStr是指向以''\0''结尾的字符串的指针
//steps是要求移动的n
void LoopMove ( char * pStr, int steps )
{
//请填充...
}

解答:
正确解答1:
void LoopMove ( char *pStr, int steps )
{
    int n = strlen( pStr ) - steps;
    char tmp[MAX_LEN];   
    strcpy ( tmp, pStr + n );
    strcpy ( tmp + steps, pStr);   
    *( tmp + strlen ( pStr ) ) = ''\0'';
    strcpy( pStr, tmp );
}

正确解答2:
void LoopMove ( char *pStr, int steps )
{
    int n = strlen( pStr ) - steps;
    char tmp[MAX_LEN];   
    memcpy( tmp, pStr + n, steps );   
    memcpy(pStr + steps, pStr, n );     
    memcpy(pStr, tmp, steps );   
}
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-5-13 21:17:57 | 只看该作者
把一个字符串从后往前表示出来?
int n=strlen(str),m
char new(n)
for (i=n;i>=0;i--)
{
m=n-i;
new(m)=str(n);
}
具体怎么写记不清楚了,好久没写c语言了,思想就是新建一个字符串把原字符串从后往前依次把值附到新字符串中去,strlen获得字符串长度,
for (i=n;i>=0;i--)实现从后向前循环
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-5-13 22:32:59 | 只看该作者
有个系统函数 你可以试试
strrev    包含在头文件  string.h中 作用是 颠倒串中各字符的顺序

#include<stdio.h>
#include<string.h>
main()
{
     char *p="123456789";
     *p=strrev(p);
     printf("%s",p);
     getch();
}

在win-tc中运行成功 输出为987654321
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 02:03 , Processed in 0.071014 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表