pset2可读性总是在等级1之前打印,无论输入是什么



我知道这是一个相当新手的问题,所以如果解决方案对你们来说是痛苦的显而易见的,我很抱歉。我已经完全编写了pset 2的可读性,它可以打印出用户输入文本的字母,单词和句子的数量-我已经删除了那些打印语句,因为它们不需要pset(我只是想确保函数返回一些东西-它们工作得很好)。

我现在要打印出年级水平,但无论我输入什么文本,我都只能得到1年级之前的结果。我已经检查了我的打印声明是否有什么问题,我似乎可以在那里找到一个问题,所以我认为可能是年级水平计算本身的错误——我一直看到我的眼睛都变方了,对于我的生命,我看不到任何错误。

如果有人能对我的问题提出一些建议,我希望能避免头痛:),或者甚至给我指出正确的方向,这样我就能学到东西。(也是第一次海报,长时间潜伏者,所以如果有什么格式不正确,请原谅我)。谢谢大家!

下面是我的代码:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
// my functions to calculate letters, words
int count_letters(string text);
int count_words(string text);
int count_sentences(string text);
int main(void)
{
string text = get_string("Text: ");
int letters = count_letters(text);
int words = count_words(text);
int sentences = count_sentences(text);
float calculation = (0.0588 * letters / words * 100) - (0.296 * sentences / words * 
100) - 15.8;
int index = round(calculation);
if (index < 1)
{
printf("Before grade 1.n");
}
else if (index >= 16)
{
printf("Grade: 16+.n");
}
else
{
printf("Grade: %i.n", index);
}
}
int count_letters(string text)
{
int letters = 0;
for (int i = 0; i < strlen(text); i++)
//((text[i] > 65 && text[i] < 90) || (text[i] > 97 && text[i] < 122))
if (isalpha(text[i]))
{
letters++;
}
return letters;
}
int count_words(string text)
{
int words = 0;
for (int i = 0; i < strlen(text); i++)
if isspace ((text[i]))
{
words++;
words = words + 1;
}
return words;
}
int count_sentences(string text)
{
int sentences = 0;
for (int i = 0; i < strlen(text); i++)
if (text[i] == '.' || text[i] == '!' || text[i] == '?')
{
sentences++;
}
return sentences;
}

我只是想确保函数返回一些东西-它们工作得很好

是的,函数返回"某物";但是是正确的吗?建议您添加回调试打印,并仔细和批判性地查看结果。从最简单的文本("一条鱼")开始。两条鱼。红色的鱼。蓝鱼!")。29个字母,8个单词,4个句子。输出什么结果?

count_words函数内部你有一个if语句,if语句需要有括号,即使你有括号,这一行也没有意义,所以也要仔细检查逻辑。

最新更新