You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何统计包含3个以上相同字母的单词数量

你当前的代码仅统计了单词长度,没有记录每个单词内的字符出现频率,因此无法识别是否存在3个以上相同字母。

实现思路

  • 为每个单词单独维护一个字符出现次数的统计数组,ASCII范围的字符可以直接用大小为256的int数组实现
  • 读取单词字符时同步更新对应字符的计数,一旦有任意字符计数≥3就标记该单词符合要求
  • 遇到单词分隔符(空格/句号)时,判断当前单词是否符合要求,符合则总计数+1,同时重置所有单词级别的临时变量

修改后可运行代码

#include <stdio.h>
#include <stdlib.h>
// 如果需要不区分大小写统计,引入下面的头文件
// #include <ctype.h>

int main() {
    char c;
    // 总符合要求的单词数
    int validWordCount = 0;

    printf("Enter a phrase that ends with a period:\n");

    do {
        // 每个单词的临时变量,每次新单词开始时重置
        int charCount[256] = {0}; // 统计每个ASCII字符出现次数
        int hasThreeSame = 0; // 标记当前单词是否有≥3个相同字符
        c = getchar();
        // 读取完整一个单词
        while (c != ' ' && c != '.') {
            // 不区分大小写的话放开下面这行注释
            // c = tolower(c);
            charCount[(unsigned char)c]++;
            // 只要有一个字符达到3次就标记,后续不用重复判断
            if (charCount[(unsigned char)c] == 3) {
                hasThreeSame = 1;
            }
            c = getchar();
        }
        // 单词读取结束,判断是否符合要求
        if (hasThreeSame) {
            validWordCount++;
        }
    } while (c != '.');

    printf("%i \n", validWordCount);

    system("pause");
    return 0;
}

补充说明

该实现默认区分字符大小写,比如A和a会被判定为不同字符,如果需要忽略大小写,放开代码中注释的tolower相关代码即可。

内容的提问来源于stack exchange,提问作者Rostyk Zhuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:45:02