首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c ++中创建count_letters函数?

在c ++中创建count_letters函数?
EN

Stack Overflow用户
提问于 2021-07-09 19:26:15
回答 2查看 461关注 0票数 1

任务:创建一个C代码,从用户那里获取一些文本输入,并打印出其中字母数的计数。字母可以是任何大写字母或小写字母字符,但不应该包括任何标点符号、数字或其他符号。

  • --我已经编写了这段代码,但是它打印了错误的输出(例如,如果输入是"Ad“,则输出是"1字母”!)我在里面找不到窃听器!谢谢!

代码语言:javascript
复制
#include <stdio.h>
#include <ctype.h>
#include <cs50.h>
#include <string.h>

int main (void)
{
    char alphabets[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    string text = get_string("Text: ");
    int length = strlen(text);
    int n = 0;
    for (int i = 0; i < length; i++)
    {
        for (int j = 0; j < length; j++)
        {
            if (alphabets[j] == text[i] || toupper(alphabets[j]) == text[i])
            {
                m++;
            }
        }
        if (m == 0)
        {
            length--;
        }
        m = 0;
    }
    printf ("%i letter(s) \n", length);
    
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-09 19:58:01

你应该使用isalpha

然后你可以简单地做:

代码语言:javascript
复制
int main (void)
{
    string text = get_string("Text: ");
    size_t length = strlen(text);
    int n = 0;
    for (size_t i = 0; i < length; ++i)
    {
        if (isalpha(text[i])) ++n;
    }
    printf ("%i letter(s) \n", n);   
}
票数 1
EN

Stack Overflow用户

发布于 2021-07-09 19:59:50

嵌套的for循环以及在此调用中使用的变量length

代码语言:javascript
复制
printf ("%i letter(s) \n", length);

别说得通。

也是这个变量

代码语言:javascript
复制
int n = 0;

都没有用过。

调用标准函数strlen效率低下。

您所需要的只是一个for循环,在这个循环中,您将检查给定的字符是否代表一个字母。

注意,在标头isalpha中声明了标准的C函数<ctype.h>,它决定了一个字符是否是字母。

该程序可以如下所示

代码语言:javascript
复制
#include <stdio.h>
#include <ctype.h>
#include <cs50.h>

int main( void )
{
    string text = get_string( "Text: " );

    size_t n = 0;

    for ( string current = text; *current != '\0'; ++current )
    {
        if ( isalpha( ( unsigned char )*current ) ) ++n;
    }

    printf( "%zu letter(s)\n", n );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68321866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档