到目前为止,它可以读取更简单的十进制数字,例如 $10.00、$220.50、$14.25。但是当它变成像 12.76 美元、320.84 美元、47.53 美元这样的数字时,它甚至不会运行。
我想知道是什么原因造成的以及如何解决它。
这是.h文件
#define TWENTY_BILL 20.00
#define TEN_BILL 10.00
#define FIVE_BILL 5.00
#define ONE_BILL 1.00
#define QUARTER_COIN 0.25
#define DIME_COIN 0.10
#define NICKEL_COIN 0.05
#define PENNY_COIN 0.01
这是 .c 文件
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "Value.h"
int main(int argc, char *argv[] ) {
/*
*Checks if argc has just one argument
*If not, give error message
*/
if (argc < 2) {
printf("Error: One argument required.");
return 0;//If more than 1 argument, stops it
}//end if
/*
* Converts argv[1] into double input
* Then input2 is created as a float
* input is transferred to input2
* Floor function is used, Multiplies
* input2 by 100 and then divide by 100 to
* leave only 2 decimal places
* Then Prints input2, %6.2f sets the field width
* for 2 decimal places
*/
double input = atof(argv[1]);
float input2;
input2 = input;
input2 = floor(input2 * 100) / 100;
printf("You have entered: %6.2f\n", input2);
/*
* Creates variables for dollar
* bill and coin set to 0
*/
int twentycount = 0;
int tencount = 0;
int fivecount = 0;
int onecount = 0;
int quartercount = 0;
int dimecount = 0;
int nickelcount = 0;
int pennycount = 0;
//Loops when input is greater than 0.0
while (input2 > 0.0)
{
/*Twenty Dollar Bill
* When $20 is less than input2,
* input2 - $20 = new input2
* Add count to twentycount
*/
if (TWENTY_BILL <= input2)
{
input2 = input2 - TWENTY_BILL;
twentycount++;
}//end if twenty
/************************/
/*Ten Dollar Bill
* When $10 is less than input2,
* input2 - $10 = new input2
* Add count to tencount
*/
else if (TEN_BILL <= input2)
{
input2 = input2 - TEN_BILL;
tencount++;
}//end if ten
/***********************/
/*Five Dollar Bill
* When $5 is less than input2,
* input2 - $5 = new input2
* Add count to fivecount
*/
else if (FIVE_BILL <= input2)
{
input2 = input2 - FIVE_BILL;
fivecount++;
}//end if five
/**********************/
/*One Dollar Bill
* When $1 is less than input2,
* input2 - $1 = new input2
* Add count to onecount
*/
else if (ONE_BILL <= input2)
{
input2 = input2 - ONE_BILL;
onecount++;
}//end if one
/*********************/
/*Quarter Coin
* When $0.25 is less than input2,
* input2 - $0.25 = new input2
* Add count to quartercount
*/
else if (QUARTER_COIN <= input2)
{
input2 = input2 - QUARTER_COIN;
quartercount++;
}//end if quarter
/*********************/
/*Dime Coin
* When $0.10 is less than input2,
* input2 - $0.10 = new input2
* Add count to dimecount
*/
else if (DIME_COIN <= input2)
{
input2 = input2 - DIME_COIN;
dimecount++;
}//end if dime
/*********************/
/*Nickel Coin
* When $0.05 is less than input2,
* input2 - $0.05 = new input2
* Add count to nickelcount
*/
else if (NICKEL_COIN <= input2)
{
input2 = input2 - NICKEL_COIN;
nickelcount++;
}//end if nickel
/*********************/
/*Penny Coin
* When $0.01 is less than input2,
* input2 - $0.01 = new input2
* Add count to pennycount
*/
else if (PENNY_COIN <= input2)
{
input2 = input2 - PENNY_COIN;
pennycount++;
}//end if penny
/********************/
/*
* If anything else
* Print Invalid Change
*/
else
{
printf("Invalid change");
}
}//end while loop
/*
* If twentycount is more than 0
* Print amount of $20 bills used
*/
if (twentycount > 0)
{
printf("Amount of $20: %i\n", twentycount);
}//end twentycount
/*
* If tencount is more than 0
* Print amount of $10 bills used
*/
if (tencount > 0)
{
printf("Amount of $10: %i\n", tencount);
}//end tencount
/*
* If fivecount is more than 0
* Print amount of $5 bills used
*/
if (fivecount > 0)
{
printf("Amount of $5: %i\n", fivecount);
}//end fivecount
/*
* If onecount is more than 0
* Print amount of $1 bills used
*/
if (onecount > 0)
{
printf("Amount of $1: %i\n", onecount);
}//end onecount
/*
* If quartercount is more than 0
* Print amount of $0.25 bills used
*/
if (quartercount > 0)
{
printf("Amount of $0.25: %i\n", quartercount);
}//end quartercount
/*
* If dimecount is more than 0
* Print amount of $0.10 bills used
*/
if (dimecount > 0)
{
printf("Amount of $0.10: %i\n", dimecount);
}//end dimecount
/*
* If nickelcount is more than 0
* Print amount of $0.05 bills used
*/
if (nickelcount > 0)
{
printf("Amount of $0.05: %i\n", nickelcount);
}//end nickelcount
/*
* If pennycount is more than 0
* Print amount of $0.01 bills used
*/
if (pennycount > 0)
{
printf("Amount of $0.01: %i\n", pennycount);
}//end pennycount
return 0;
}//end main