标题:I Love China !逆转为 China Love I !
只看楼主
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
结帖率:100%
已结贴  问题点数:20 回复次数:27 
I Love China !逆转为 China Love I !
程序代码:
#include <stdio.h>
#include <string.h>
void Reverse(char *a,int n);
int main()
{
    char str[1028];
    gets(str);
    Reverse(str,strlen(str));
    puts(str);
    return 0;
}
void Reverse(char *a,int n)
{
    int left = 0;
    int right = n-1;
    while(left < right)
    {
        char temp = a[left];
        a[left++] = a[right];
        a[right--] = temp;
    }
}

这是一个字符串的逆序。怎么修改一下,让它能实现 I Love China !逆转为 China Love I !
求助!!!
搜索更多相关主题的帖子: China 
2015-04-09 13:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:20 
通用方法,先把句子拆为单词序列表(有多种方法,可以都考慮一下),再处理。标点符号是不逆的,自己考虑。


[ 本帖最后由 TonyDeng 于 2015-4-9 13:56 编辑 ]

授人以渔,不授人以鱼。
2015-04-09 13:55
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
写一个类似vb里的split函数。
2015-04-09 14:10
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
得分:0 
程序代码:
#include <stdio.h>
#define IS_LETTER(_CH_)    \

 (_CH_ >= 'A' && _CH_ <= 'Z' || _CH_ >= 'a' && _CH_ <= 'z')
void swap(char *head,char *tail);
int main()
{
    char str[] = "I Love China!";
     char *head = str;
     char *tail = str;
     while (*tail != '\0')
          tail ++;
     swap(head, tail - 2);
     tail = head;
     while (*head != '\0') 
     {
          while (!IS_LETTER(*head) && *head != '\0')
          {
             head ++;     
        }
          tail = head;
          while (IS_LETTER(*tail))
          {
            tail ++;      
          }               
          swap(head, tail - 1);
         head = tail;
     }
     puts(str);
     return 0;
}
void swap(char *head, char *tail)
{
    while (head < tail) 
    {
          *head ^= *tail;
          *tail ^= *head;
          *head ^= *tail;
          head ++;
          tail --;
     }
}
已解决!!!

风回小院庭芜绿,柳眼春相续
2015-04-10 10:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
建议:不要就题做题,注意重构。

授人以渔,不授人以鱼。
2015-04-10 11:03
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
得分:0 
回复 5楼 TonyDeng
什么叫重构?帮忙解释一下。

风回小院庭芜绿,柳眼春相续
2015-04-10 11:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是引用纳兰伽香在2015-4-10 11:17:19的发言:

什么叫重构?帮忙解释一下。

http://baike.baidu.com/view/5310022.htm

授人以渔,不授人以鱼。
2015-04-10 11:24
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
程序代码:
# include <stdio.h>
int main (int argc,char*argv[])
{
    
    int i;
    for(i=argc-1;i>0;i--)
     puts(argv[i]);
    
    
    
    return 0;
}


用命令输入 i love China

你醒了?快起来敲代码!!
2015-04-10 12:23
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
得分:0 
回复 8楼 code力力
你试了吗  绝对不是这么弄的

风回小院庭芜绿,柳眼春相续
2015-04-10 12:58
young
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:223
专家分:160
注 册:2004-9-5
得分:0 
当puts输出遇到字符串结束符时会输出\n
使用printf("%s ", argv[i]);较合适

如果你爱C语言,请你爱指针; 如果你爱指针,请你爱指针的指针;
2015-04-10 13:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-443743-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.497965 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved