📜  C测验– 112 |问题3(1)

📅  最后修改于: 2023-12-03 15:00:12.762000             🧑  作者: Mango

C测验 - 112 问题3

简介

本题要求编写一个函数,统计一个字符串中有多少个单词。单词是由空格、制表符或换行符分隔的字符序列。

函数原型
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 语言编程的技能水平。