📅  最后修改于: 2023-12-03 15:14:25.784000             🧑  作者: Mango
该测验是一份针对C语言程序员的练习题,问题3要求实现一个函数,将字符串中的单词反转。这道题考察了C语言的字符串处理和循环语句的使用。下面是函数的函数签名和具体要求:
void reverse_words(char *s);
要求实现一个函数,将一个字符串中的单词反转。例如:对于字符串 "hello world",翻转后应该为 "world hello"。
下面是函数的一些要点和思路:
下面是题目的代码实现:
void reverse_words(char *s) {
int len = strlen(s);
// 去掉字符串中的多余空格
int i, j;
for (i = 0, j = 0; i < len; ) {
while (s[i] == ' ') i++; // 找到下一个单词的起始下标
if (i == len) break;
if (j) s[j++] = ' '; // 在单词与单词之间添加一个空格
while (s[i] && s[i] != ' ') { // 反转单词
s[j++] = s[i++];
}
// 反转单词
int l = j - 1;
for (int k = j - (i - j); k < l; k++, l--) {
char t = s[k];
s[k] = s[l];
s[l] = t;
}
}
s[j] = '\0'; // 给字符串结尾添加一个 NULL
}
代码注释比较详细,可以帮助理解程序。