【发布时间】:2018-10-30 15:07:56
【问题描述】:
我编写了一个程序来将 0-9999 之间的数字显示为单词。该程序运行正常,但是当我输入 11-19 和 415,612,819 之类的数字(基本上所有末尾包含 0-19 的数字)时,我遇到了意外的输出。我写的程序是用 c++ 编写的,我目前是 c++ 的初学者。
//This program converts number into words
#include<iostream>
using namespace std;
main()
{
int number,unit,ten,hundred,thousand;
cout<<"Please enter any number between 0-9999: ";
cin>>number;
thousand=number/1000;
number=number%1000;
hundred=number/100;
number=number%100;
ten=number/10;
number=number%10;
unit=number;
if(number>=11 && number <=19)
{
if(number==11) cout<<"eleven";
if(number==12) cout<<"twelve";
if(number==13) cout<<"thirteen";
if(number==14) cout<<"fourteen";
if(number==15) cout<<"fifteen";
if(number==16) cout<<"sixteen";
if(number==17) cout<<"seventeen";
if(number==18) cout<<"eighteen";
if(number==19) cout<<"ninteen";
}
else
{
if(thousand>=1 && thousand <=9)
{
if(thousand==1) cout<<"one thousand";
if(thousand==2) cout<<"two thousand";
if(thousand==3) cout<<"three thousand";
if(thousand==4) cout<<"four thousand";
if(thousand==5) cout<<"five thousand";
if(thousand==6) cout<<"six thousand";
if(thousand==7) cout<<"seven thousand";
if(thousand==8) cout<<"eight thousand";
if(thousand==9) cout<<"nine thousand";
}
if(hundred>=1 && hundred <=9)
{
if(hundred==1) cout<<" one hundred";
if(hundred==2) cout<<" two hundred";
if(hundred==3) cout<<" three hundred";
if(hundred==4) cout<<" four hundred";
if(hundred==5) cout<<" five hundred";
if(hundred==6) cout<<" six hundred";
if(hundred==7) cout<<" seven hundred";
if(hundred==8) cout<<" eight hundred";
if(hundred==9) cout<<" nine hundred";
}
if(ten>=1 && ten <=9)
{
if(ten==1) cout<<" ten";
if(ten==2) cout<<" twenty";
if(ten==3) cout<<" thirty";
if(ten==4) cout<<" fourty";
if(ten==5) cout<<" fifty";
if(ten==6) cout<<" sixty";
if(ten==7) cout<<" seventy";
if(ten==8) cout<<" eighty";
if(ten==9) cout<<" ninty";
}
if(unit>=1 & unit <=9)
{
if(unit==1) cout<<" one";
if(unit==2) cout<<" two";
if(unit==3) cout<<" three";
if(unit==4) cout<<" four";
if(unit==5) cout<<" five";
if(unit==6) cout<<" six";
if(unit==7) cout<<" seven";
if(unit==8) cout<<" eight";
if(unit==9) cout<<" nine";
}
}
}
输出:-
Please enter any number between 0-9999: 14
ten four
输出:-
Please enter any number between 0-9999: 114
one hundred ten four
【问题讨论】:
-
听起来您可能需要学习如何使用调试器来单步调试您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。延伸阅读:How to debug small programs
-
number=number%10;不会产生大于 9 的数字,因此if(number>=11 && number <=19)永远不会为真。 -
这看起来与过去几天几个不同帐户发布的代码非常相似。如果这些是你的同学,也许是时候聚会了?
-
我建议你们一起坐在一台电脑前学习如何使用调试器。从长远来看,这比一遍又一遍地问同样的问题对你更好。
-
听起来不错。