使用C语言完成下述问题:将一句话的单词进行倒置,标点不倒置。比如 I like Tsinghua University. 经过函数后变为:University. Tsinghua like I
时间: 2024-12-21 11:26:56 浏览: 8
要使用C语言实现这个功能,你可以编写一个函数,该函数接受一个字符串作为输入,然后按单词进行处理。以下是实现的一个简单示例:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 函数声明,用于处理字符串并返回倒置后的结果
char* reverse_words(char* sentence);
int main() {
char input[] = "I like Tsinghua University.";
char* reversed = reverse_words(input);
printf("Reversed: %s\n", reversed);
free(reversed); // 释放内存
return 0;
}
// 实现倒置单词的函数
char* reverse_words(char* sentence) {
int len = strlen(sentence);
char* start = sentence;
char* end = sentence + len - 1;
while (start < end) {
// 找到单词边界,跳过非字母字符
while (isalnum(*start)) {
start++;
}
if (start == end) {
break; // 如果到达了句尾,跳出循环
}
// 找到下一个单词边界
while (!isalnum(*end)) {
end--;
}
// 将单词部分倒置
char temp = *start;
for (int i = start+1; i <= end; i++) {
*(start++) = *(i);
}
*(start) = temp;
// 移动指针到下一个单词开始位置
start++, end--;
}
// 添加句尾的标点符号,因为之前处理的是单词,所以这里直接复制过去
char* reversed_str = malloc(len + 1);
strcpy(reversed_str, start);
reversed_str[len] = '\0';
return reversed_str;
}
```
运行上述代码,它会打印出 "University. Tsinghua like I"。
阅读全文