gpt4 book ai didi

c - 如何在不使用字符串的情况下计算单词总数?

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:25 24 4
gpt4 key购买 nike

我实现了这个代码来获得否。字数。它适用于所有单个字符,即如果我输入 "q w r " 作为输入,它会给我 3 个单词,但是当我输入 "qwe ed df " 作为输入时, 它显示 2.

#include<stdio.h>
int main()
{
int c=getchar();

int words=0;

while(c!=EOF)
{
if(c==' ' || c=='\n')
{
c=getchar();
}
else if(c>='a' && c<='z')
{
c=getchar();

if(c==' ')
{
words=words+1;
c=getchar();
}
else
{
c=getchar();
}
}
}
printf("%i\n",words);
}

最佳答案

诀窍是计算边界。

您的原始代码存在错误......

        if(c==' ')
{
words=words+1;
c=getchar();
}

只有当一对读取结果为 'a' => 'z' 后跟 ' ' 时,代码才计算单词数。

诀窍是将循环简化为一次读取一个字符的循环。 (这确保不会出现奇怪的边界),以及一个模拟您是在吃单词还是空格的状态机。

enum Mode { word = 1, spaces = 2 };
int c=getchar();
enum Mode currentMode = spaces;
int words=0;

while(c!=EOF)
{
if(c==' ' || c=='\n')
{
if( currentMode == word ) {
words=words+1;
}
currentMode = spaces;
}
else if(c>='a' && c<='z')
{
currentMode = word;
}
c=getchar();
}
// count the last word...
if( currentMode == word ) {
words=words+1;
}

代码现在会忽略任何非字母字符,既不是单词也不是空格。

编辑:修复了不正确的枚举用法

关于c - 如何在不使用字符串的情况下计算单词总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38949764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com