将数字转换为文本时出错 我写了一个C++程序,把数字转换成文本。
我有两个问题(编辑:现在只有一个):将数字转换为文本时出错 我写了一个C++程序,把数字转换成文本。,c++,C++,我有两个问题(编辑:现在只有一个): 第一个问题是程序只写出1-19的正确数字,从20-99的所有数字,比如我写34的时候,我得到的答案是30,而不是应该的34。三十分钟后,它只是出现错误,程序关闭。[问题已解决] 第二个问题是,我希望我可以写0-999之间的数字,而不仅仅是99,但我不知道如何做到这一点 #include <iostream> #include <string> using namespace std; int main() { int
- 第一个问题是程序只写出1-19的正确数字,从20-99的所有数字,比如我写34的时候,我得到的答案是30,而不是应该的34。三十分钟后,它只是出现错误,程序关闭。[问题已解决]
- 第二个问题是,我希望我可以写0-999之间的数字,而不仅仅是99,但我不知道如何做到这一点
#include <iostream> #include <string> using namespace std; int main() { int num, Ldight, Rdight; string ones[] = {"zero", "one", "two", "three", "four", "five","six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}; string tens[] = {"twenty","thirty","fourty","fifty", "sixty","seventy","eighty", "ninety"}; cout << "Pick a number between 1-99: "; cin >> num; if(num <= 0) { cout << "ERROR!" << endl; } else if (num >= 0 && num <= 19) { cout << "Your number is: " << ones[Rdight] ; } else if (num >=20 && num <=99) { Rdight = num % 10; Ldight = num / 10; cout << "Your number is: " << tens[Ldight - 2] << ones[Rdight]; } return 0; }
#包括 #包括 使用名称空间std; int main() { int num、Ldight、Rdight; 字符串一[]={“零”、“一”、“二”、“三”、“四”, “五”、“六”、“七”、“八”、“九”、“十”, “十一”、“十二”、“十三”、“十四”、“十五”, “十六”、“十七”、“十八”、“十九”}; 字符串十[]={“二十”、“三十”、“四十”、“五十”、“六十”、“七十”、“八十”、“九十”}; cout>num;
如果(num您应该更改此项:cout << "Your number is: " << tens[Ldight - 2] << ones[num];
cout您应该更改以下内容:
cout << "Your number is: " << tens[Ldight - 2] << ones[num];
cout您可以尝试将用户输入分成两部分。 如果用户输入为:55,则将其拆分为5和5,然后打印 十位数[5]+一位数[5] 这将是更好的解决方案。
您将删除所有可能导致问题的if-s您可以尝试将用户输入分成两部分。 如果用户输入为:55,则将其拆分为5和5,然后打印 十位数[5]+一位数[5] 这将是更好的解决方案。
您将删除所有可能导致问题的if-s对于第一个问题,您的问题在这一行:cout << "Your number is: " << tens[Ldight - 2] << ones[num];
cout对于第一个问题,您的问题如下:
cout << "Your number is: " << tens[Ldight - 2] << ones[num];
cout使用以下行: 不能使用以下行:
无法在发布前正确设置代码格式。这将帮助我们帮助您。请在发布前正确设置代码格式。这将帮助我们帮助您。“一个”对数字0..19有效。@Matstpeterson和我们的情况是
。对于大于20的数字,我们从不使用10或更多的值。对不起,我以为您的意思是“在上面的行中也有[不是复制到这里的那一行,而是前一行执行类似操作]”.我明白你的意思。我也喜欢让人们在明显的“这是家庭作业”问题中独立思考,我没有给出确切的变化,只是一些提示…@Mats我通常会同意你的看法,但我认为这个问题是一个“知道做对的事,做错了的事,盯着代码看太久而没有注意到”的明显例子-我认为在这种情况下给出精确解没有任何害处。“1”对数字0..19有效。@Matstpeterson和我们的情况是num>=20
。对于大于20的数字,我们从不使用10或更多的值。对不起,我想你的意思是“也在上面的行中[不是复制到这里的那一行,而是前一行做了类似的事情]“。我明白你的意思。我也喜欢让人们在明显的“这是家庭作业”问题中独立思考,我没有给出确切的变化,只是一些提示…@Mats我通常会同意你的看法,但我认为这个问题是一个明显的例子,“知道该做什么,做了什么错事,盯着代码看了太久而没有注意到”-我认为在这种情况下给出准确的解决方案没有什么坏处。不,除非你重新定义英语,使“十个三”等词成为有效词,否则你不会去掉num>=20
s。不,你不会去掉if
s,除非你重新定义英语,使“十个三”等词成为有效词。if