> 文档中心 > 【PAT甲级】题解-1005 Spell It Right

【PAT甲级】题解-1005 Spell It Right

PAT :计算机程序设计能力考试:一个高校编程学习赛,内容基础,据说题目描述含糊不清,造成诸多理解错误。

第一观感是:输入输出样例极少,未给学生充分理解题目,提供更多辅助。

PAT 甲级:英文题目,涉及基础数据结构。【胡说,涉及好多算法】

问题描述

Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.

给定一个非负整数 N N N,计算各数位上数字之和,并将和的各数位上的数字翻译成对应的英文单词。

输入格式

Each input file contains one test case. Each case occupies one line which contains an N ( ≤ 1 0 100 ) N (≤10^{100}) N(10100).

一行输入,包含一个非负整数 N ( ≤ 1 0 100 ) N (≤10^{100}) N(10100)

输出格式

For each test case, output in one line the digits of the sum in English words. There must be one space between two consecutive words, but no extra space at the end of a line.

一行输出,翻译后的各数位数字之和,注意英文单词,空格分割;行尾不可包含多雾空格

输入输出样例

输入样例 输出样例
12345 one five

样例解释:无。

题解 1

思路分析:和转成字符串,拆分翻译后,格式化输出。
类题参考:【PAT乙级】题解-1002 写出这个数
【字符数组拆和,逆序输出】

#include using namespace std;int main() {char chs[101];cin >> chs;int sum = 0;int i = 0;while(chs[i] != '\0') {sum += chs[i++] - '0';}string words[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};string sumStr = to_string(sum);for(int i = 0; i < sumStr.size(); i++) {cout << words[sumStr[i]-'0'];if(i == sumStr.size() - 1) {cout << endl;} else {cout << " ";}}return 0;}

冰雪之城