1005 Spell It Right
2020-04-03 本文已影响0人
胖胖的熊管家
题目
输入一个数字N,N<=10^100。将各位数字相加,最后输出相加和的各位数字的英文,两个连续的单词之间必须有一个空格,但在一行的末尾不能有多余的空格。
Sample Input
12345
Sample Output
one five
解法
法一:C++
思路:
将输入的数字作为字符string去处理,这样可以运用string的特性进行for循环将各位相加。
源代码:
#include <iostream>
#include <cstdio>
#include <math.h>
#include<vector>
using namespace std;
string transfer(int digit);
int main(){
string num;
cin>>num;
int sum=0;
for(int i=0;i<num.length();i++){
sum += num[i] -'0'; //减去0初始的ascll码值 48 这样就是数字运算了
}
vector<int> result;
if(sum == 0){
cout<<"zero"<<endl;
}
while(sum != 0){
result.push_back(sum % 10);
sum /= 10;
}
for (int i = result.size() - 1; i >= 0; i--) //倒序输出vector
{
if (i == result.size() - 1)
cout<<transfer(result[i]);
else
cout<<' '<<transfer(result[i]);
}
}
string transfer(int digit) //阿拉伯数字和英文转换器
{
switch (digit)
{
case 0:
return "zero";
break;
case 1:
return "one";
break;
case 2:
return "two";
break;
case 3:
return "three";
break;
case 4:
return "four";
break;
case 5:
return "five";
break;
case 6:
return "six";
break;
case 7:
return "seven";
break;
case 8:
return "eight";
break;
case 9:
return "nine";
break;
default:
break;
}
return "NaN"; //用不到,但函数必须得有返回值
}
知识点+坑:
- 是数字的字符进行数字运算的时候,可以通过该字符数字” -'0' “这样的方式得到他的实际数字值。
'4' - ’0‘ = 4
或者
'4' - 48 = 4