关于字符串逆序的问题,假设题目为输入I am a student,而输出为student a am I。这道题的思路很清楚,就是先把整个句子逆序,然后将一个一个单词逆序,这样便得到了最终结果。而在将单词逆序的时候,可以设置两个指针,一个指针依次遍历,当遍历到空格的时候,将此时的指针代表的值赋\0,然后将另一个指针传到逆序函数中,函数结束后,再赋空格。
程序代码如下:
/**********************************************************
FileName:
Description:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。(笔试题)
句子中单词以空格符隔开。为简单起见,没有标点符号。
例如输入“Iamastudent”,则输出“studentaamI”
FuctionList:
************************************************************/
#include<stdio.h>
#defineN50
voidoverturn1(char*p)
{
char*h=p;
while(*(++p)!='\0')
{
;
}
p=p-1;
chartemp;
while(h<=p)
{
temp=*(p);
*p=*h;
*(h)=temp;
p--;
h++;
}
}
voidoverturn2(char*p)
{
char*pre=p;
char*cur=p;
while(*(cur)!='\0')
{
if(*(cur)=='')
{
*cur='\0';
overturn1(pre);
*cur='';
cur++;
pre=cur;
}
else
{
cur++;
}
}
overturn1(pre);
}
intmain()
{
charphrase[N]={0};
printf("pleaseinput:\n");
gets(phrase);
overturn1(phrase);
overturn2(phrase);
puts(phrase);
return0;
}