您的位置:首页 > 其它

单词翻转

2015-10-30 10:12 211 查看
问题描述:输入一个英文句子,翻转句子中单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,若输入“I am a student.”,则输出”student. a am I”。

分析

翻转每个单词;

翻转每个句子。

代码

include <stdio.h>
include <string.h>

define  MAXSIZE 1000

void ReverseString(char *s ,int from, int to);

int main(int argc, char *argv[]){
char s[MAXSIZE];
int pre = 0;
int cur = 0;
int n = 0;

scanf("%[^\n]",s);
n = strlen(s);
printf("%s\n",s);

while (cur < n){
if (s[cur] == ' '){
ReverseString(s,pre,cur-1);
pre = cur+1;
}
++cur;
}

if (s[cur-1] != ' '){
ReverseString(s,pre,cur-1);
pre = cur+1;
}

ReverseString(s,0,n-1);
printf("%s\n",s);
return 0;
}

void ReverseString(char *s ,int from, int to){
while(from < to){
char tmp s[from];
s[from] = s[to];
s[to] = tmp;
from++;
to--;
}
}


重点

两个位置指示器,分别指向单词开始和结束位置;

遇到空格就翻转单词,最后一个单词翻转要额外处理;

scanf输入一行字符串scanf(“%[^\n]”,s),用getline函数也可;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: