用C语言编写的反转句子 如把:what is your name 换成 name your is what 看看哪里错

问题描述:

用C语言编写的反转句子 如把:what is your name 换成 name your is what 看看哪里错
#include
#include
void ReverseWord(char *x,char *y)
{
while(*x
1个回答 分类:综合 2014-11-20

问题解答:

我来补答
#include<stdio.h>
void ReverseWord(char *x,char *y)
{
    while(x<y)    //这里比较的是指针的位置先后,而不是指针指向字符的大小
    {
        char t=*x;
        *x++=*y;
        *y--=t;
    }
}
// 将句子按单词逆序
char *ReverseSentence(char *s)
{
    // 这两个指针用来确定一个单词的首尾边界
    char *p=s ;         // 指向单词的首字符
    char *q=s ;   // 指向空格或者 '\0'

    while(*q!='\0')
   {
       if (*q==' ')
       {
            ReverseWord(p,q-1) ;
            q++;  // 指向下一个单词首字符
            p=q;
        }
        else
            q++;
    }
    ReverseWord(p,q-1); // 对最后一个单词逆序
    ReverseWord(s,q-1); // 对整个句子逆序
    return s;
}
void main()
{
 char *k;
 char b[]="what is your name";    //这里要定义数组,不能用指针指向字符串常量,因为字符串常量的内存空间是不能被修改的
 k=ReverseSentence(b);
 printf("%s",k);    //输出字符串传指针就可以了,*k只是字符串第一个字符
 puts("");
}
 
 
展开全文阅读
剩余:2000
上一页:ghhhhh
下一页:概括每段段意