我想创建程序,将数字转换为由单词写的数字。
示例:n = 1321 - >输出:“一” - “三” - “二” - “一”
这是我的代码:
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int digits(int number){
int digits = 0;
while (number != 0){number /= 10; digits++;}
return digits;
}
int main(){
int num,remainder,i;
int digits(int);
vector<string> num_str = {"zero","one","two","three","four","five","six","seven","eight","nine"};
cin >> num;
int length = digits(num);
vector<int> num_int(length);
while(num > 0){
remainder = num % 10;
num_int.push_back(remainder);
num /= 10;
}
for(i = 0;i<num_int.size();++i){
if(i == (num_int.size() - 1)){
cout << num_str[num_int[i]];
}else{
cout << num_str[num_int[i]] <<"-";
}
}
return 0;
}
例如我输入:43,我得到输出:“零 - 零 - 四 - 三”。 并且“零”的数量总是等于数字的位数。 我该如何解决?
答案 0 :(得分:0)
是否必须按照您的方式进行'数字'提取,或者您只想将数字打印为字符串?
#include <iostream>
#include <string>
int main()
{
std::string const nums[10] = { "zero","one","two","three","four","five","six","seven","eight","nine" };
long long num;
std::cin >> num;
std::string const numStr = std::to_string(num);
for (size_t i = 0; i < numStr.length(); ++i)
std::cout << (i > 0 ? "-" : "") << "\"" << nums[numStr[i] - 48] << "\"";
std::cout << std::endl;
return 0;
}