输入一行由空格分隔的多个单词(输入行中的字符总数不大于100,单词之间的空格可以多个),利用fengChi()函数把一维数组ar1中各个单词取出并放到二维数组ar2中,并返回单词的总数。 然后调用paixu()函数对二维数组ar2中的单词按升序进行排序,最后对排序后的单词进行输出。
时间: 2023-06-02 10:06:23 浏览: 232
好的,这是一个关于编程的问题,我可以回答。请给我一些时间来处理。
这是我的回答:
这是一个基本的字符串处理问题。您可以使用 sscanf() 函数来从输入行中读取每个单词,并将它们存储到一个 char 类型的数组中。然后,您可以将这些单词拷贝到一个二维 char 类型的数组中,并返回单词的总数。
在排序单词之前,您需要使用一个标准库函数,如 qsort() 来对二维数组ar2中的单词按字母顺序进行排序。最后,您可以循环遍历排序后的单词,并将它们输出到控制台上。
下面是一个示例实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fengChi(char *input, char **output) {
int count = 0;
char *token = strtok(input, " ");
while (token) {
output[count++] = strdup(token);
token = strtok(NULL, " ");
}
return count;
}
int cmp(const void *a, const void *b) {
return strcmp(*(char **)a, *(char **)b);
}
void paixu(char **words, int count) {
qsort(words, count, sizeof(char *), cmp);
}
void printWords(char **words, int count) {
for (int i = 0; i < count; i++) {
printf("%s ", words[i]);
}
printf("\n");
}
int main() {
char input[100] = "";
fgets(input, 100, stdin);
char *words[100] = {0};
int count = fengChi(input, words);
paixu(words, count);
printWords(words, count);
for (int i = 0; i < count; i++) {
free(words[i]);
}
return 0;
}
```
阅读全文