简单的C程序无法正确计算

时间:2015-05-27 22:06:43

标签: c math

所以,我对编程完全不熟悉,而且我正在学习编程C.我正在尝试用C编写一个简单的程序来计算佣金如下

$rootScope

每当我尝试运行它时,会发生两件事。首先,如果我尝试在程序中输入任何小数,例如如果我说费率为12.5,它会立即跳过其他输入并完成程序,称佣金为0.00。如果我忽略小数,程序运行正常,直到结束,当我仍然得到佣金为0.00。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

"%.2f"scanf的非法格式字符串,因此您的代码会导致未定义的行为。正确的格式字符串是"%f"

另外你应该检查scanf的结果。如果scanf失败,则不会从输入中消耗坏数据,因此后续scanfs也会失败(这就是您看到其他输入被跳过的原因)。

例如:

if ( 1 != scanf("%f", &fRate) )
{ 
    printf("Invalid input for fRate.\n");
    exit(EXIT_FAILURE);
}

答案 1 :(得分:1)

您的格式说明符错误,如果您这样做必须使用编译器警告,那么您不会问这个,因为该格式说明符无效,您不能使用scanf()来限制小数位数在关于SO的许多问题中讨论过,更重要的是你不需要,也没有意义,所以只需从格式说明符中删除.2,然后检查scanf()之前是否成功使用这些值。

答案 2 :(得分:1)

Activity不是"%.2f"的有效格式。有关详细信息,请参阅scanf() manual page

最简单的格式是scanf

此外,最好检查"%f"的返回值,以便了解操作何时成功。

scanf