如果条件无法正常工作-C语言



i具有以下代码,其中如果条件似乎无法正常工作。

为例,如果我输入0.29给出的结果为

季度:1角色:0镍:4205264便士:4

您可以看到这是不正确的,因为在第一个if语句执行"如果(cents> = 25)"之后,这将留下剩余的4,该剩余4个存储在" Cents"变量中。这应该意味着接下来的两个"如果"语句返回" 0",而最终if语句则执行'if(Cents> = 1)'。但是,事实并非如此,因为您可以看到Nickles返回4205264的值。

输入1.17时,结果按预期返回:

季度:4角色:1镍:1便士:2

#include <cs50.h>
#include <math.h>
#include <stdio.h>
int main(void)
{
float dollars;
int cents;
int quartersUsed;
int dimesUsed;
int nickelsUsed;
int penniesUsed;
do 
{ 
    dollars = get_float("Float: ");
    while (dollars <= 0) {
        dollars = get_float("Float: ");
    }
    cents = roundf(dollars * 100);
    printf("%in", cents);
    if (cents >= 25) {
        quartersUsed= cents / 25;
        cents = cents % 25;
    } 
    if (cents >= 10) {
       dimesUsed = cents / 10;
       cents = cents % 10;
    } 
    if (cents >= 5) {
       nickelsUsed = cents / 5;
       cents = cents % 5;
    } 
    if (cents >= 1) {
       penniesUsed = cents / 1;
       cents = cents % 1;
    } 
    printf("Quarters: %in",quartersUsed);
    printf("Dimes: %in",dimesUsed);
    printf("Nickels: %in",nickelsUsed);
    printf("Pennies: %in",penniesUsed);

}
while (dollars == false);
}

您需要初始化变量,因为如果您不输入if块,示例中发生了什么,您将结束从未进行过Intialial的变量。p>在C中,没有为您完成Intialization,因此,如果您不在变量中放置一个值,则它们的值将具有不确定的值(取决于以前在内存中存在哪个值)。

请注意,您的如果条款不仅是不必要的,因为它们也可能会让您的某些变量非初始化打印(这可能是什么导致输出中的问题)。,就像您不需要所有这些条件检查一样,您不需要所有这些变量。请记住,C程序员倾向于尽可能关注运营和空间的经济。检查下面的实现,将其与您的实现进行比较,然后尝试猜测它节省了多少操作和空间。(由于您没有发布" CS59.H"库,因此我对其进行了评论,并实现了一个始终返回" 1.17"的" get_float"函数。)

#include <stdio.h>
#include <math.h>
//#include <cs50.h>
float get_float(const char *)
{
    return 1.17;
}
int main()
{
    float dollars;
    while((dollars = get_float("Float: ")) <= 0);
    int cents = (int) roundf(dollars * 100);
    printf("%in", cents);
    printf("Quarters: %in", cents / 25);
    printf("Dimes:    %in", (cents = cents % 25) / 10);
    printf("Nickels:  %in", (cents = cents % 10) / 5);
    printf("Pennies:  %in", cents % 5);
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新