单词翻转


题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。


举例说明

例如输入字符串”I am a student. ”,则输出”student. a am I”。

解题思路

  第一步翻转句子中所有的字符。比如翻转“I am a student. ”中所有的字符得到”.tneduts a m a I”,此时不但翻转了句子中单词的顺序,连单词内的字符顺序也被翻转了。第二步再翻转每个单词中字符的顺序,就得到了”student. a am I”。这正是符合题目要求的输出。

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reverse(char b[],int start,int end){
if(NULL==b||start<0||end>strlen(b)||start>end){
return ;
}
while(start<end) {
char temp;
temp=b[start];
b[start]=b[end];
b[end]=temp;
start++;
end--;
}
}
int main(){
char c[100];
int end,start;
while(fflush(stdin),gets(c)!=NULL){
reverse (c,0,strlen(c)-1);
start=0;
end=0;
while(start<strlen(c)){
if(c[start]==' '){
end++;
start++;
}else if(end==strlen(c)||c[end]==' '){
reverse(c,start,end-1);
end++;
start=end;
}
else {
end++;
}
}
puts(c);
}
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值