📅  最后修改于: 2023-12-03 15:00:12.762000             🧑  作者: Mango
本题要求编写一个函数,统计一个字符串中有多少个单词。单词是由空格、制表符或换行符分隔的字符序列。
int count_words(const char* str);
str
:指向一个要统计单词数的字符串的指针,字符串中只包含大小写英文字母、数字、空格、制表符和换行符。该函数应返回在字符串 str
中的单词数量。
const char* str_example = "This is a string\nwith several\twords.";
int num_words = count_words(str_example);
printf("The string has %d words.", num_words);
输出:
The string has 5 words.
可以利用一个变量来记录当前是否在一个单词中,以及已经出现了多少个单词。
int count_words(const char* str) {
int num_words = 0;
int in_word = 0;
while (*str != '\0') {
if (*str == ' ' || *str == '\t' || *str == '\n') {
in_word = 0;
} else if (!in_word) {
in_word = 1;
num_words++;
}
str++;
}
return num_words;
}
该函数使用了一个循环来遍历字符串中的每个字符。使用 in_word
变量来记录当前是否在一个单词中。如果当前字符是空格、制表符或换行符,那么将 in_word
设置为 0,表示当前不在一个单词中;如果不在一个单词中并且遇到了非空格、制表符或换行符的字符,那么将 in_word
设置为 1,并增加 num_word
的计数器。
最后返回 num_word
即可。
该题目考察了对字符串和循环的掌握程度,涉及了指针的使用、字符的比较等基本概念和操作。通过本题的练习,可以加深对于 C 语言基础的理解,提高 C 语言编程的技能水平。