编写程序实现将键盘输入的一行字符按单词倒排输出。如键盘输入“I love you”,屏幕显示“you love I”。要求: (1) 编写一个函数int invertion(char ch1[], char ch2[])实现按单词倒排字符串,第一个形参ch1接受实参传过来的原字符串,倒排后的新字符串通过第二个形参返回主函数,函数中还需要统计该字符串中共有多少个单词,函数最后返回字符串中包含的单词个数。 (2) 主函数中输入字符串,调用子函数invertion,输出倒排后的字符串及字符串中包含的单词个数。用c语言给出完整代码,不需要解释和注释
时间: 2023-02-06 11:37:41 浏览: 259
以下是用 C 语言实现的代码:
```
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int invertion(char ch1[], char ch2[])
{
int i, j, k, count;
i = strlen(ch1) - 1; // 初始化为字符串末尾的下标
j = 0; // 初始化 ch2 的下标
count = 0; // 单词数量计数器
while (i >= 0)
{
// 找到当前字符为单词末尾的字符
while (i >= 0 && !isspace(ch1[i]))
{
i--;
}
// 将单词倒序拷贝到 ch2
k = i + 1;
while (k <= strlen(ch1) - 1)
{
ch2[j] = ch1[k];
j++;
k++;
}
// 在 ch2 中插入一个空格
ch2[j] = ' ';
j++;
// 跳过空格
while (i >= 0 && isspace(ch1[i]))
{
i--;
}
count++; // 单词数量计数器加 1
}
// 最后一个单词后面不需要插入空格
ch2[j - 1] = '\0'; // 在 ch2 的末尾插入字符串结束符
return count; // 返回单词数量
}
int main()
{
char ch1[100], ch2[100];
printf("请输入一个字符串:");
gets(ch1); // 读入字符串
int count = invertion(ch1, ch2); // 调用函数并获取单词数量
printf("倒排后的字符串是:%s\n", ch2); // 输出倒排后的字符串
printf("字符串中包含的单词数量是:%d\n", count); // 输出单词数量
return 0;
}
```
在这
阅读全文