PTA 1005 Spell It Right

題目翻譯

如今有一個非負整數N,你的任務是計算它的每一位上的數字的和而且輸出和的每一位上的數字的英文。ios

輸入格式

每個輸入文件包含一個測試樣例。每個樣例在一行上輸出一個N(\(\leq100^{100}\)).c++

輸出格式

對於每個測試樣例,在一行中輸出和的每一位的英文單詞。每兩個連續的單詞之間必須有一個空格,行尾沒有空格。數組

樣例輸入

12345

樣例輸出

one five

分析:題目很短,理解起來應該也不難。大意就是先把N的每一位上的數加起來,再把這個和的每一位對應的英文單詞輸出。咱們能夠先把從0到9對應的英文單詞存在一個字符串常量數組裏,之後直接讀這個數組就行。以後用一個循環來求和,而後讀取這個和的每一位。我這裏用了一個sprintf函數,把這個和轉成了字符串類型(實際上是由於懶得寫取餘的循環……),這個函數仍是挺方便的,建議你們瞭解一下。函數

​咱們常常用的printf()函數是把給定的數據類型轉成字符串類型輸出到標準輸出流中,也就是控制檯裏。sprintf()函數就是把這個字符串輸出到指定的字符數組裏,很適合作這種題目。測試

​以後就是逐個讀取這個字符串的每個字符,把它減掉‘0’就是對應的數值了。spa

#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] != '\0'; i++)
        printf("%s ", num[ans[i] - '0']);
    printf("%s", num[ans[i] - '0']);

    return 0;
}
相關文章
相關標籤/搜索