A1005 Spell It Right (20分).cpp

2020-01-17  本文已影响0人  km15

考察:数字和转为单个位的英文单词输出

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;

}
上一篇 下一篇

猜你喜欢

热点阅读