c - 浮点异常 CS50 可读性赋值
问题描述
我面临一些关于浮点异常错误的问题,因为以前我单独打印变量时,所以我不确定出了什么问题。下面是我到目前为止编写的代码。我不确定是什么导致了错误,因为我很确定我没有被零除。
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
int main(void)
{
//promt user for text
string n = get_string("Text: ");
int sumletters = 0;
int sumdots = 0;
int sumspaces = 1;
for (int i = 0; i < strlen (n); i++ )
{
if (n[i] >= 'A' && n[i] <= 'z')
{
sumletters = sumletters + 1;
}
if (n[i] == ' ')
{
sumspaces = sumspaces + 1;
}
if (n[i] == '.' || n[i] == '?' || n[i] == '!' )
{
sumdots = sumdots + 1;
}
float L = sumletters / (sumspaces / 100);
float S = sumdots / (sumspaces / 100);
int index = round ((0.0588 * L) - (0.296 * S) - 15.8);
if (index < 1)
{
printf ("Before grade 1\n");
}
{
printf ("Grade 16+\n");
}
else
{
printf ("Grade %i", index);
}
}
printf ("\n");
}
解决方案
这是错误的部分:
sumletters / (sumspaces / 100)
sumspaces / 100
使用整数除法,因此它几乎总是 0。您可以通过简单地分配除法来重构代码以使用浮点除法:
sumletters / sumspaces * 100
推荐阅读
- gradle - 如何处理两个 gradle 插件的任务冲突?
- mysql - 获取一定间隔的数据?
- log4j - Hazelcast IMDG 3.12.5 添加 log4j 依赖以支持日志记录
- symfony - 如何在 webpack encore 中设置 config.node
- google-chrome - 在 WSL Ubuntu 上运行“google-chrome”作为 --headless --no 沙箱会产生多个错误 - 如何在 WSL 中使用无头截屏?
- c - 在计算文本文件程序的字符时出现未定义的行为?
- python - 两个张量之间的Pytorch差异
- lua - 使用lua更改属性名称的xml标记
- postgresql - 使用 AWS Aurora PostgreSQL 数据库集群连接到哪个终端节点进行读/写操作
- php - 按 SKU 数字对 WooCommerce 产品进行排序 (1.2.3.4.5.6.......)