代码在应该执行时不会执行

时间:2016-02-23 02:41:40

标签: c cs50

功能"检查"穿过去;但是,即使它们应该是if语句也不起作用。此代码的重点是找到更改所需的最少数量的硬币(用户输入)。我做了if语句应该有效;但是,他们不是。我想这可能是因为我试图比较浮点数和整数但我不太确定。

#include <stdio.h>
#include <cs50.h>

float change;
int count;
int check();

int main(void)
{
    printf("Please enter the change in dollars : $");
    change = GetFloat();
    change = change*100;
    printf("¢% f\n", change);
    int check();
    printf("%i \n", count);
}

int check(void)
{
    count = 0;

   if (change > 24)
   {
       change = change - 25;
       count++;
   }
   else if (change > 9)
   {
       change = change - 10;
       count++;
   }
   else if (change > 4)
   {
       change = change - 5;
       count++;
   }
   else if (change > 0)
   {
       change = change - 1;
       count++;
   }

   return 0;
}

1 个答案:

答案 0 :(得分:1)

int check();

不会调用该函数。这是另一个宣言。也许你打算用

check();

<强>更新

while中需要check()循环。

int check(void)
{
   count = 0;
   while ( change > 0 )
   {
      if (change > 24)
      {
         change = change - 25;
         count++;
      }
      else if (change > 9)
      {
         change = change - 10;
         count++;
      }
      else if (change > 4)
      {
         change = change - 5;
         count++;
      }

      // This is already checked in conditional
      // Use just else.
      // else if (change > 0)
      else
      {
         change = change - 1;
         count++;
      }

   }
   return 0;
}

如果没有while循环,则函数最多将count递增1。