我已经制作了一个程序,可以输出输入的任何数字,但它会将其转换为单词而不仅仅是数字,例如,如果你输入“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(" Centsn"); } } 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(" Centsn");
如果您发送到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()函数后会工作。
以上就是c/c++开发分享如何使我的输出仅显示我的检查生成器程序所需的内容相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522972.html