【发布时间】:2020-04-15 03:43:22
【问题描述】:
这是一个计算输入文本中字母、单词和句子数量的程序。在最后一部分,我尝试使用一个公式,但我不断收到浮点异常。请帮忙。
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <math.h>
int main(void)
{
char text[100];
int number;
int words = 0, i;
int sentences = 0, j;
float l = number / words * 100;
float s = sentences / words * 100;
int index = 0.0588 * l - 0.296 * s - 15.8;
int grade = round(index);
// Text Input = Text //
printf("Text: ");
fgets(text, sizeof(text), stdin);
printf("%s", text);
// Letters = number //
number = strlen(text);
printf("%d letters\n", number);
// Words = words //
for (i = 0; text[i] != '\0'; i++)
{
if (text[i] == ' ' && text[i+1] != ' ')
words++;
}
printf("%d words\n", words + 1);
// Sentences = sentences
for (j = 0; j < strlen(text); j++)
{if (text[j] == '.' || text[j] == '!' || text[j] == '?')
sentences++;
}
printf("%d sentences\n", sentences);
// grade level based on formula //
if (index >= 1 && index <= 16)
{
printf("Grade %d\n", grade);
}
else
{
if (index < 1)
{
printf("Before Grade 1\n");
}
if (index > 16)
{
printf("Grade 16+\n");
}
}
}
我不断收到浮点异常,最后一节根据公式从年级开始。 . . float l, float s, int index, int grade 与最后一节有关。 . .不知道怎么办
【问题讨论】:
-
number没有赋值。 -
哼。谷歌搜索“浮点异常”会返回一个框,上面写着“浮点异常是当您尝试用浮点数做一些不可能的事情时发生的错误,例如除以零。”这确实是您的问题(
int words = 0;后跟number / words * 100)。您并没有为此付出太多努力:(
标签: c exception point cs50 floating