1、解题思路
要求输入一个非负正整数,但数字值很大,所以得用字符数组进行存储,然后将这些数字求和,再将其输出即可。
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main() {
char words[11][8] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
char N[105];
int index[5];
cin >> N;
int len = strlen(N);
int sum = 0;
for (int i = 0; i < len; i++) {
sum += N[i] - '0';
}
int count = 0;
if (sum == 0) {
cout << words[0];
return 0;
}
while (sum != 0) {
index[count] = sum % 10;
sum = sum / 10;
count++;
}
for (int i = count - 1; i >= 0; i--) {
if (i == 0) cout << words[index[i]];
else cout << words[index[i]] << ' ';
}
system("pause");
return 0;
}
2、遇到的坑
代码思路并不难,主要是细节的处理,一开始没有考虑输入为零的情况,对于sum为0的情况没有予以讨论,所以运行结果没有全对,这类型题目还是要把握住细节,输入很小和很大的极端情况一直要予以考虑,以此为记!