zoukankan      html  css  js  c++  java
  • PTA 1005 Spell It Right

    题目翻译

    现在有一个非负整数N,你的任务是计算它的每一位上的数字的和并且输出和的每一位上的数字的英文。

    输入格式

    每一个输入文件包含一个测试样例。每一个样例在一行上输出一个N((leq100^{100})).

    输出格式

    对于每一个测试样例,在一行中输出和的每一位的英文单词。每两个连续的单词之间必须有一个空格,行尾没有空格。

    样例输入

    12345
    

    样例输出

    one five
    

    分析:题目很短,理解起来应该也不难。大意就是先把N的每一位上的数加起来,再把这个和的每一位对应的英文单词输出。我们可以先把从0到9对应的英文单词存在一个字符串常量数组里,以后直接读这个数组就行。之后用一个循环来求和,然后读取这个和的每一位。我这里用了一个sprintf函数,把这个和转成了字符串类型(其实是因为懒得写取余的循环……),这个函数还是挺方便的,建议大家了解一下。

    ​我们经常用的printf()函数是把给定的数据类型转成字符串类型输出到标准输出流中,也就是控制台里。sprintf()函数就是把这个字符串输出到指定的字符数组里,很适合做这种题目。

    ​之后就是逐个读取这个字符串的每一个字符,把它减掉‘0’就是对应的数值了。

    #include <stdio.h>
    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    
    const char *num[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
    
    int main()
    {
        int cot = 0;
        string s;
        char ans[100] = {0};
        cin >> s;
        for (int i = 0; i < s.length(); i++)
            cot += s[i] - '0';
        sprintf(ans, "%d", cot);
        int i;
        for (i = 0; ans[i + 1] != ''; i++)
            printf("%s ", num[ans[i] - '0']);
        printf("%s", num[ans[i] - '0']);
    
        return 0;
    }
    
  • 相关阅读:
    机器学习-决策树
    第八章- 假设检验
    第七章-参数估计
    第六章-总体与样本
    第五章-大数定律&中心极限定理
    第三,四章-多维随机变量及其分布
    第二章-随机变量分布
    第一章, 随机事件
    第六章-二次型
    第五章-矩阵的特征值和特征向量
  • 原文地址:https://www.cnblogs.com/shenc9ea/p/12795395.html
Copyright © 2011-2022 走看看