如何使我的输出仅显示我的检查生成器程序所需的内容

我已经制作了一个程序,可以输出输入的任何数字,但它会将其转换为单词而不仅仅是数字,例如,如果你输入“1234.56”,它将把它转换为“一千二百三十四美元和… .56分“。 分数应始终为数字。 到目前为止,一切都很好,但如果我投入的金额少于一千,我会在那里得到诸如“千”或“百”等多余的词。 例如,如果我输入“15.77”,我的输出将是“千美元十五美元和…… 77美分”。 我不希望千人或者百人在那里,没有那些将是完美的!

代码如下:

#include  void printNum(int); void printNum2(int); void printNum3(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 = 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; printNum(a); //Printing is the variables are in the thousands, hundreds, tens or ones categories. printf("Thousand "); printNum(b); printf("Hundred "); printNum2(c); printf(""); printNum3(d); printf("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 "); } void printNum3(int x) { 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 "); } 

我已经编码了一个月,所以如果我觉得我犯了简单的错误就是这个原因。

你需要在printfs周围添加条件:

 if (a > 0) { printNum(a); //Printing is the variables are in the thousands, hundreds, tens or ones categories. printf("Thousand "); } 

问题是你无条件地打印“千”,“百”等……

  printNum(a); //Printing is the variables are in the thousands, hundreds, tens or ones categories. printf("Thousand "); printNum(b); printf("Hundred "); printNum2(c); printf(""); printNum3(d); printf("Dollars and ... "); printf("%d", printcents); printf(" Cents\n"); 

如果您发送到printNum的数字为零,您不想打印出您的文本字符串,您必须检查该条件:

 /* call to printNum x */ if ( /* check if the parameter to printNum matches any case, seems to be if not zero){ printf(/* whatever string is appropriate */); } 

例如,输入为512.26

512.26 / 1000 <<<应该是512.26 / 1000.f所以这两个操作数都是浮点数

将导致浮点值:0.51226f NOT 0.0f

使用地板(0.51226f)将导致0.0f

建议始终应用floor()函数以产生0.0f

即使使用浮点数,比较如if(value!= 0.0f)也会打印出来

应用floor()函数后会工作。