一,绪
最近复习C语言的时候,碰到一个问题,将一个字符串中的单词反转过来。比如:
输入: I like beijing.
输出: beijing. like I
一时间竟然不会用C语言解决的这个问题,先试着用python做了下,用以记述这个问题。
# 输入一个字符串
str1 = input()
# 用空格分割字符串
s = str1.split(" ")
# 反转列表
s.reverse()
# 输出
for i in range(len(s)):
print(s[i],end=" ")
2019年都快完了,赶紧回来把C语言的版本补上,代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
// 反转算法,对输入的字符串整体反转
void reverse(char* start, char* end){
while (start < end){
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main(){
char input[100];
//不能使用scanf,scanf遇到空格,一次接收就结束了
gets(input);
//反转整个句子
reverse(input, input + strlen(input) - 1);
//反转句子中的单词
char* start = input;
while (*start){
char* end = start;
while (*end != ' '&&*end){
end++;
}
reverse(start, end - 1);
if (*end)
start = end + 1;
else{
start = end;
}
}
printf("%s", input);
system("pause");
return 0;
}
二,总结
使用C语言反转字符串中的单词,需要把这个问题拆分成两个问题,首先,将这个字符串整体反转,然后再将每个单词反转一次就可以了。