考察:数字和转为单个位的英文单词输出
learn && wrong:
1、数组老是不给名字!以及老是用错数组的名字,这里数组是ans,而不是sum,是ans[]
2、果然出错就优先检查边界值,发现0拼错了
答案技巧
3、N小于等于10的100次方,而最大和每位都是9,所以数位和最大会有100 * 9 = 900,
4、sprintf函数
*/
编程思想:
1、非负整数,但是100次方,太大了,超过long long了!只能数组来做了,所以就是字符数组来做。用string来做,我一直都用string而不是char数组做的
2、第二点就是,英语字符做成数组,来调用,从0到9
#include <iostream>
#include <string>
#include <vector>
using namespace std;
char c[10][10] = { "zero", "one","two","three","four","five","six","seven","eight","nine", };
int main()
{
string s1;
cin >> s1;
int sum = 0;
for (int i = 0;i < s1.size();++i) { //计算和
sum += s1[i] - '0';
}
int ans[200];int num = 0;
//可是得逆序呀!还是得开个数组
do { //输出英语字母
ans[num++] = sum % 10;
sum /= 10;
} while (sum != 0);
for (int i = num - 1;i >= 0;--i) {
printf("%s", c[ans[i]]);
if (i != 0) printf(" ");
}
return 0;
}
网友评论