用c语言给我写出将一句话的单词倒置,标点不倒置,比如“i like beijing.”,经过处理后变成“beijing. like i”,字符串长度不超过100的代码
时间: 2024-01-22 21:18:48 浏览: 136
用C++实现,将一句话里的单词进行倒置的方法详解
5星 · 资源好评率100%
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char* str) {
int i, j, len = strlen(str);
for (i = 0, j = len - 1; i < j; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
for (i = 0, j = 0; i <= len; i++) {
if (str[i] == ' ' || str[i] == '\0') {
int k;
for (k = j, j = i - 1; k < j; k++, j--) {
char temp = str[k];
str[k] = str[j];
str[j] = temp;
}
j = i + 1;
}
}
}
int main() {
char str[101];
printf("请输入一句话:");
fgets(str, 101, stdin);
reverseWords(str);
printf("单词倒置后的结果为:%s", str);
return 0;
}
```
代码思路如下:
1. 首先将整个字符串倒置;
2. 然后按照空格或者字符串结尾作为分隔符,将每个单词内部再次倒置。
需要注意的是,由于fgets函数会将输入的换行符也读入字符串中,因此需要将数组长度设置为101,从而可以读入长度为100的字符串。
阅读全文