读书人

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

发布时间: 2013-04-20 19:43:01 作者: rapoo

杭电1062字符串翻转问题!!!!!!!!!!!!!
本帖最后由 wanyangnumberone 于 2013-04-13 17:26:04 编辑 Sample Input
3
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)//这里改为<就没问题了,的确是有连续空格的情况。

读书人网 >C语言

热点推荐