本文介绍了如何使我的检查发电机输出完全是什么,而不是“零”在C的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的检查发电机程序已经完美无瑕地为您输入任何输入,使其输出数字的单词。例如,如果我输入1234.56,它会输出一千二百三十四美元和... 56美分。但是,每当我想输出像1000,它会输出一千零美元和... 0分。显然它不是1000零美元,美分是完全罚款,但我希望摆脱那个零,但我需要那里的时刻,如果你输入0.01它会输出零美元和1 Cent。

My Cheque generator program has worked flawlessly for any input you give it to make it output the numerals in words. for example if I were to input "1234.56" it will out put "One Thousand Two Hundred Thirty Four Dollars and ... 56 Cents". However whenever I want to output something like "1000" it will output "One Thousand Zero Dollars and ... 0 Cents". Obviously its not 1000 Zero dollars, The cents are perfectly fine, however I wish to get rid of that "Zero" but I need that in there for moments such as if you were to type in "0.01" It would output "Zero Dollars and 1 Cent".

代码如下:

#include <stdio.h>

void printNum(int);
void printNum2(int);
int main()
{

int a = 0;
int b = 0;
int c = 0;
int d = 0;
int num = 0;
int printcents; //To convert the float "cents" to an integer.

float inclusive;
float cents;

printf("Welcome to the IPC144 Cheque Generator!!\n");
printf("PAY TO THE ORDER OF... amahmood29 (018359133)\n");
printf("Enter a monetary value from $0.01 to $9999.99 inclusive: ");
scanf("%f", &inclusive);

if(inclusive < 0.00 || inclusive >= 10000.00) {
    printf("Sorry, cannot create cheque for that amount, try again next time!\n");
       }
else
{
    a = inclusive / 1000;                          //This data is replacing our variable by diving whatever the vaulue is by either 1000, 100, 10.
    inclusive = inclusive - (a*1000);
    b = inclusive / 100;
    inclusive = inclusive - (b*100);
if ( inclusive > 19 ){
    c = inclusive / 10;
    inclusive = inclusive - (c*10);
}
else
{
    c = inclusive;
    d = 0;
}
    d = inclusive;
    num = inclusive;
    cents = (inclusive - num)*100; //To calculate our "Cents" with numerals.
    printcents = cents;


          /*Printing if the variables are in the thousands, hundreds, tens or ones categories.*/
if (a > 0){
    printNum(a);
    printf("Thousand ");
}
if (b > 0){
    printNum(b);
    printf("Hundred ");
}
    printNum2(c);
if (d > 0){
    printNum(d);
    printf("Dollars and ... ");
}
else if (d == 0){
    printf("Zero Dollars and ... ");
}
    printf("%d", printcents);
    printf(" Cents\n");
    }
}

void printNum(int x)  //Created functions to easily output various if statements.
{

if ( x == 1)
    printf("One ");
else if ( x == 2)
    printf("Two ");
else if (x == 3)
    printf("Three ");
else if (x == 4)
    printf("Four ");
else if (x == 5)
    printf("Five ");
else if (x == 6)
    printf("Six ");
else if (x == 7)
    printf("Seven ");
else if (x == 8)
    printf("Eight ");
else if (x == 9)
    printf("Nine ");

}
void printNum2(int x)
{
 if ( x == 10)
     printf("Ten ");
 else if ( x == 11)
     printf("Eleven ");
 else  if ( x == 12)
     printf("Twelve ");
 else if ( x == 13)
     printf("Thirteen ");
 else if (x == 14)
     printf("Fourteen ");
 else if (x == 15)
     printf("Fifteen ");
 else if (x == 16)
     printf("Sixteen ");
 else if (x == 17)
     printf("Seventeen ");
 else if (x == 18)
     printf("Eighteen ");
 else if (x == 19)
     printf("Ninteen ");
 else if (x == 2)
     printf("Twenty ");
 else if (x == 3)
     printf("Thirty ");
 else if (x == 4)
     printf("Forty ");
 else if (x == 5)
     printf("Fifty ");
 else if (x == 6)
     printf("Sixty ");
 else if (x == 7)
     printf("Seventy ");
 else if (x == 8)
     printf("Eighty ");
 else if (x == 9)
     printf("Ninety ");
}


推荐答案

$ c> inclusive = inclusive - (c * 10)有舍入误差,因此在执行 if(d> 0)

Various subtractions like inclusive = inclusive - (c*10) are suffering round-off error and therefore have a tiny amount left when doing if (d > 0).

建议四舍五入至0.01。示例: inclusive = round(100 *(包括 - - (c * 10)))/ 100.0 和其他地方。

Suggest rounding to nearest 0.01. Example: inclusive = round(100*(inclusive - (c*10)))/100.0 and other places.

或以整数分毫不重复。

这篇关于如何使我的检查发电机输出完全是什么,而不是“零”在C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 02:35
查看更多