读取数字并转换为单词
Posted
技术标签:
【中文标题】读取数字并转换为单词【英文标题】:Reading digits and converting to words 【发布时间】:2017-01-26 01:20:11 【问题描述】:我是 C++ 新手,我必须编写一个程序,将用户的 4 位数字转换为单词,即 7238 将被写为七二三八。然而,它把每个数字都写成未知数。对菜鸟的任何建议将不胜感激。
#include iostream
using namespace std;
int main()
char number;
cout << "Please enter a 4 digit number: ";
cin >> number;
switch(number)
case 1 :
cout<< "one";
break;
case 2 :
cout<< "two";
break;
case 3 :
cout<< "three";
break;
case 4 :
cout<< "four";
break;
case 5 :
cout<< "five";
break;
case 6 :
cout<< "six";
break;
case 7 :
cout<< "seven";
break;
case 8 :
cout<< "eight";
break;
case 9 :
cout<< "nine";
break;
case 0 :
cout<< "zero";
break;
default :
cout << "UNKNOWN.";
【问题讨论】:
一个 char 是单个字符 - 你打算如何读取 4 位数字? 你熟悉循环吗?number
变量的类型必须是 int
,你必须尝试使用循环分隔数字,除法和计算余数
不,我对循环并不熟悉。
【参考方案1】:
听起来像是家庭作业,但这里有一些提示。将您的number
变量更改为int
的类型您可以将数字分解为具有除法和模数的单个变量。我会把它们塞进一个整数数组中。
int array[4];
arr[0] = (number / 1000) % 10; // Thousands
....... // You do the hundreds and tens
arr[3] = (number % 10); // Ones
然后在您的计数器小于 4(数组的长度)的 switch 语句周围使用循环。确保在每个循环结束时增加计数器。哦,它是#include <iostream>
。
【讨论】:
【参考方案2】:使用to_string
和range based for
:
#include <iostream>
#include <string>
using namespace std;
int main()
int number;
cout << "Enter the number: ";
cin >> number;
string strnum = to_string(number);
for (auto c : strnum)
switch (c)
case '0': cout << "zero "; break;
case '1': cout << "one "; break;
case '2': cout << "two "; break;
case '3': cout << "three "; break;
case '4': cout << "four "; break;
case '5': cout << "five "; break;
case '6': cout << "six "; break;
case '7': cout << "seven "; break;
case '8': cout << "eight "; break;
case '9': cout << "nine "; break;
default: cout << "non-digit"; break;
return 0;
【讨论】:
【参考方案3】:您需要在案例语句中输入 ascii 值。目前,您正在比较数字 0 - 9 的 ascii 值。 值可以在这里找到:http://www.asciitable.com/
【讨论】:
无需从表中获取值,只需使用'1'
等字符文字即可。
我同意,但您可以选择其中一种。它更像是“桌子”而不是“桌子”。我认为从 OP 的帖子中可以清楚地看出他们不知道字符值和数字值之间的区别。所以我的链接和方法有两个目的。 1. 一个解决方案 2. 关于 ascii 值的课程
我想,但我们不想推广将 ASCII 值直接硬编码到程序中的坏习惯。【参考方案4】:
您的变量是char
类型。 char
存储一个字符,通常是 ASCII 编码的。例如,如果用户输入“1”,则通常会转换为整数值 49,而不是 1。读入 int
或更改大小写标签以使用字符文字:
case '1':
cout << "one";
break;
然后您可以使用循环来读取多个数字。
【讨论】:
以上是关于读取数字并转换为单词的主要内容,如果未能解决你的问题,请参考以下文章