CS50可读性第2周计数字母的错误[已关闭]

hs1rzwqc  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(76)

**已关闭。**此问题不符合Stack Overflow guidelines。它目前不接受回答。

这个问题似乎与help center中定义的范围内的编程无关。
8天前关闭。
Improve this question
我写这段代码的目的是,让用户打印出给定文本中的字母数,但我的代码没有这样做。我似乎根本不明白出了什么问题。任何帮助/建议将不胜感激。我的代码也编译,但它不会做什么,我希望它。我看了一些例子,但没有找到答案。

#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

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

}

int count_letters(string text)
{
    int letters = 0;
    for (int i = 0; i < strlen(text); i++)
    {
        if(isalpha(text[i]))
        {
            letters++;
        }
    }
    return letters;
    printf("Letters %i\n", letters);

}

字符串
代码的输出是空的。只是转到下一行在终端窗口中写入一些内容。

rdlzhqv9

rdlzhqv91#

做着和你一样的事情。我也遇到了类似的问题,通过使用isalpha解决了这个问题。但我没有。让我对if语句很头疼。但我想我也许能帮上忙。不过,别以为我的回答没什么好的。只是想帮忙。

int count_letters(string text)
{
    int letters = 0;
    for (int i = 0; i < strlen(text); i++)
    {
        if(isalpha(text[i]))
        {
            letters++;
        }
    }
return letters;
printf("Letters %i\n", letters);
}

字符串
出现问题的第一个原因是你要求函数返回字母。函数返回variable letters。这就是integer。使最后一行printf无用(您可以删除它)。但在主:

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


您正在将int input分配给count_letters function的输出。好吧,如果你要打印输入,你会得到你所要求的字母数。但我认为你在count_letters函数中混淆了。在函数内部打印它不会返回那个值。它会返回你所要求的,变量letters。所以两个解之一是

return printf("Letters %i\n", letters);


修改你的返回函数以正确地返回printf函数。然后将其称为main为count_letters(text);,因为它已经打印了结果。

另一个选项是删除这一行printf,只留下返回字母;

int count_letters(string text)
{
int letters = 0;
for (int i = 0; i < strlen(text); i++)
    {
        if(isalpha(text[i]))
        {
            letters++;
        }
    }
return letters;
}


但是,您必须使用printf在main中将其打印出来。

int main(void)
{
string text = get_string("Text: ");
printf("Letters %i\n", count_letters(text));
}


希望这有帮助!也不要太苛刻,这是我第一次在这里发表文章。:)

相关问题