首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

杭电1062字符串翻转有关问题!

2013-04-20 
杭电1062字符串翻转问题!!!!!!!!!!!!!本帖最后由 wanyangnumberone 于 2013-04-13 17:26:04 编辑Sample In

杭电1062字符串翻转问题!!!!!!!!!!!!!
本帖最后由 wanyangnumberone 于 2013-04-13 17:26:04 编辑 Sample Input

olleh !dlrow 
m'I morf .udh 
I ekil .mca

Sample Output
hello world! 
I'm from hdu. 
I like acm.
问题的简单描述是第一行的数字是要翻转的行数,后面输入每行的字符,中间有空格,具体输入输出请看input和output。
我代码运行这些case没有问题,但是提交后是wrong answer,有人来帮看下吗?代码有注释,多谢!!!!
这是我的代码:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char c,buffer[1001];
    char* text_end;//每段字符串的结束地址
    char* text_begin;//每段字符串的开始地址
    int i=0,j=0;
    int cnt;
    char  temp;

    while((c=getchar())!='\n')
    {
        cnt=c-'0';
    }
    while(i<cnt)
    {
        gets(buffer);
        strcat(buffer," \0");//为了方便输出,将输入的字符添加空格和字符串结束符
        text_begin=&buffer[0];//初始化第一段字符串的起始地址
        for(j=0; j<strlen(buffer); j++)
        {
            if(buffer[j]==' ')//遇到空格时,将字符串翻转
            {
                text_end=&buffer[j-1];//字符串的结束地址
                while(text_begin!=text_end)//字符串翻转
                {
                    temp=*text_begin;
                    *text_begin=*text_end;
                    *text_end=temp;
                    text_begin++;
                    if(text_begin==text_end) break;
                    text_end--;
                }
                text_begin=&buffer[j+1];//每段字符串结束重置开始地址
            }
        }
        buffer[strlen(buffer)-1]='\0';//删除结尾字符串的空格字符
        printf("%s\n",buffer);
        i++;
    }

    return 0;
}
杭电 C acm
------解决方案--------------------


我总觉得这程序碰到连续两个空格会挂
[解决办法]


while(text_begin<text_end)//这里改为<就没问题了,的确是有连续空格的情况。

热点排行