c语言完成,直接写代码,不用解释: 题目: 输入一行字符,有空格、字母、各种标点符号等。 请把各个单词切割下来输出,需要输出单词及其计数,每个单词一行。按照单词在语句中出现的顺序即可,无需对单词排序。单词的定义是,字母开 头,后面跟着若干字母,碰到非字母的字符结束。 没有单词,则输出空行,并且换行。 备注:语句里,最多有10个不同的单词,单词最大长度为120。 输入、输出描述与样例: 比如输入I am a! boy!!! you are a girl. 输出 I 1 am 1 a 2 boy 1 you 1 are 1 girl 1
时间: 2023-02-06 10:58:53 浏览: 201
#include <stdio.h>
#include <string.h>
#define WORD_MAX_LEN 120
#define WORD_MAX_COUNT 10
int main() {
char input[WORD_MAX_LEN * WORD_MAX_COUNT + 1];
fgets(input, sizeof(input), stdin);
int word_count = 0;
char words[WORD_MAX_COUNT][WORD_MAX_LEN + 1];
int word_lengths[WORD_MAX_COUNT] = {0};
for (int i = 0, j = 0; input[i] != '\0'; i++) {
if (isalpha(input[i])) {
words[word_count][j++] = input[i];
word_lengths[word_count]++;
} else {
if (word_lengths[word_count] > 0) {
word_count++;
}
j = 0;
}
}
if (word_lengths[word_count] > 0) {
word_count++;
}
for (int i = 0; i < word_count; i++) {
printf("%s %d\n", words[i], 1);
}
return 0;
}