#include <iostream>
using namespace std;
void swapword(char*first,char*last) //单个单词的交换
{
while (first<last) //兼容奇数和偶数个字母的单词情况,从两头向中间读取字母
{
char t=*first;
*first++=*last; //等价于 *first=*last; first++;
*last--=t;
}
}
char *swapsentence(char* s) //整个句子中的单个单词转换
{
char *first=s; //两个指针指向句子的首字母,将句子的首字母地址传给两个指针
char *last=s;
while (*last!='\0') //last右移直到末尾
{
if (*last==' ')
{
swapword(first,last-1); //遇到空格时转换空格前的单词字母顺序
last++; //右移到下一个单词首字母
first=last; //将单词首字母赋值给first
}else{
last++; //last一直右移直到遇到空格为止
}
}
swapword(first,last-1); //将最后一个单词字母转序,注意最后一个单词是结束符,第n-1个才是字母
return s;
}
int main()
{
int n;
cin>>n;
getchar(); //getchar()从缓冲区获取输入 n 后留下的回车符号
while (n--)
{
char str[1001];
gets(str); //读取字符串到指定数组,直到接收换行符结束,换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
swapsentence(str);
cout<<str<<endl;
}
return 0;
}
杭州电子科技大学(HDU)ACM 刷题---------字符串处理之1062
最新推荐文章于 2020-12-14 19:50:17 发布