文档章节

“I am a student”反转成“student a am I”

z
 zwl1989
发布于 2016/04/28 13:55
字数 408
阅读 27
收藏 0

方法是先反转整个字符串,然后再反转字串。譬如先将“I am a student”反转为“tneduts a ma I”,然后再对每个字串(空格分割)反转一次。思想就那么简单吧。


第一种:

#include <stdio.h>

void main()
{
    char str[]="you are a student";
    printf(str);
    printf("\n");

    char *p,*q;
    char temp;
    p=q=str;
    while(*q!='\0')
    {
        q++;
    }
    q--;
    while(p<=q)
    {
        temp=*p;
        *p=*q;
        *q=temp;
        p++;
        q--;
    }//反转整个字符串

    printf(str);
    printf("\n");

    char *s;
    q=p=s=str;//指针指向开始位置
    while(*q!='\0')
    {
        if(*q==' '||*(q+1)=='\0')
        {
            p--;
            if(*(q+1)=='\0')//处理最后一个字串
                p++;
            while(s<=p)
            {
                temp=*p;
                *p=*s;
                *s=temp;
                s++;
                p--;
            }//反转局部字符串

            s=q+1;
            p=q;
        }
        q++;
        p++;
    }

    printf(str);
    printf("\n");
}
第二种:

#include <iostram>
#include <stdio.h>

int main(void)
{
    int num=-12345,j=0,i=0,flag=0,begin,end;
    char str[]="I am a student",temp;
    j=strlen(str)-1;
    
    printf(" string=%s\n",str);
    //第一步是进行全盘反转,将单词变成“tneduts a ma I”
    while(j>i)
    {
        temp=str[i];
        str[i]=str[j];
        str[j]=temp;
        j--;
        i++;
    }
    printf(" string=%s\n",str);
    int i=0;
    //第二步进行部分反转,如果不是空格则开始反转单词
    while(str[i])
    {
        if(str[i]!=' ')
        {
            begin=i;
            while(str[i]&&str[i]!=' ')
            {
                i++;
            }
            i=i-1;
            end=i;
        }
        while(end>begin)
        {
            temp=str[begin];
            str[begin]=str[end];
            str[end]=temp;
            end--;
            begin++;
        }
        i++;
    }
    printf(" string=%s\n",str);
    return 0;
}
第三种:


void  ReverseWord( char * p,  char * q)
{
     while (p < q)
     {
         char  t = *p ;
         *p++ = *q ;
         *q-- = t ;
     }
}
 
char * ReverseSentence( char  *s)
{
     char  *p = s ;    // point to the first char of a word
     char  *q = s ;    // point to a white space or '\0'
 
     while (*q !=  '\0' )
     {
         if  (*q ==  ' ' )
         {
             ReverseWord(p, q - 1) ;
             q++ ;  // move to next word
             p = q ;
         }
         else
             q++ ;
     }
 
     ReverseWord(p, q - 1) ;  // Reverse the last word
     ReverseWord(s, q - 1) ;  // Reverse the whole sentence
 
     return  s ;
}

本文转载自:http://blog.csdn.net/zwl492454828/article/details/48495671

z
粉丝 1
博文 53
码字总数 0
作品 0
西安
私信 提问
把一个字符串反转,单词不翻转

baidu PC端开发工程师的一道笔试题。 写一个函数,将字符串反转,反转方式如下:“I am a student”反转成“student a am I”,

习总
2012/10/29
4.4K
14
NHibernate从入门到精通系列(9)——一对多关联映射

内容摘要 单向关联映射 双向关联映射 一、单向关联映射 1.1 单向关联映射的描述 让我们回顾一下之前讲的《多对一关联映射》,如图1.1.1所示,其实“一对多”关联映射就是“多对一”关联映射相...

长平狐
2012/06/11
376
0
分布式缓存技术redis学习系列----深入理解Spring Redis的使用

关于spring redis框架的使用,网上的例子很多很多。但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀...

愉快的鱼儿
2017/05/27
0
0
JAVA深复制(深克隆)与浅复制(浅克隆)

1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不 复制...

gavin_jin
2013/01/15
7.5K
1
C++中map常用用法

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一...

zhangyujsj
2016/10/15
18
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
6
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
17
0
浅谈java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml...

青衣霓裳
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部