題目翻譯
現在有一個非負整數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] != '\0'; i++)
printf("%s ", num[ans[i] - '0']);
printf("%s", num[ans[i] - '0']);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55369.html
標籤:其他
