微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CS50 问题 2 - 可读性 // 分级工作不正常

如何解决CS50 问题 2 - 可读性 // 分级工作不正常

嗨,我遇到了 CS50 问题集 2 的问题,特别是可读性任务。问题是当我输入网站上的预设值以尝试测试您的程序时,其中一些值不起作用我不确定为什么它不起作用任何人都可以帮助我

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

int main(void){
  string text = get_string("Text: ");
  int letter_count = 0;
  int word_count = 0;
  int sentence_count = 0;

  for( int i=0;i < strlen(text);i++){

    if (isalpha(text[i])){
        letter_count ++;
    }
    else if(text[i] == ' '){
        word_count ++;
    }
    else if(text[i] == '.' || text[i] == '!' || text[i] == '?')
    {
        sentence_count ++;
    }
  }
  float L = ((float)letter_count / (float)word_count) * 100;
  float S = ((float)sentence_count / (float)word_count) * 100;
  float index = 0.0588 * L - 0.296 * S - 15.8;

  if (index <= 16 && index >= 0)
  {
    printf("Grade %i\n",(int) round(index));
  }
  else if (index >= 16)
  {
    printf("Grade 16+\n");
  }
  else{
    printf("Before Grade 1\n");
  }
  printf("%i Letter(s)\n",letter_count);
  printf("%i Word(s)\n",word_count+1);
  printf("%i Sentence(s)\n",sentence_count);
}

解决方法

当你检查空格来计算单词时,一个空格意味着 ' ' 确实是一个单词。但如果有空格,则表示前面一定有一个词。如下图;

你好世界。

这里有两个词,但一个空格。要解决此问题,应使用 word 初始化 1 变量。

int word_count = 1;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。