PS:萌新刷题时的代码,基本没有改过,测试点都通过了。
1.题目阐述
求一个数字的各位数之和,用英文输出
2.题目思路
建一个map映射数字与英文字母,再建一个char数组保存给定数字的各位数。由于char的编码特性,任一char数字可以通过char-'0’得到整型数字。之后就是取位数之和的位数映射一下英文单词了。
3.题解代码
我的代码如下:
#include<cstdio>
#include<map>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 101;
map<int, string> numDict;
char num[maxn];
int output[maxn];
int Count = 0;
void Test1005(){
//初始化map
numDict[0] = "zero";
numDict[1] = "one";
numDict[2] = "two";
numDict[3] = "three";
numDict[4] = "four";
numDict[5] = "five";
numDict[6] = "six";
numDict[7] = "seven";
numDict[8] = "eight";
numDict[9] = "nine";
scanf("%s", num);
int sum = 0;
for (int i = 0; i < strlen(num); i++){
sum += num[i] - '0';
}
while (sum>0){
output[Count++] = sum % 10;
sum /= 10;
}
cout << numDict[output[Count - 1]];
if (Count>1){
for (int i = Count - 2; i >= 0; i--){
cout << " " << numDict[output[i]];
}
}
cout << endl;
}
int main(){
Test1005();
getchar();
return 0;
}