【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.

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

输入输出样例

输入样例输出样例
12345one five

样例解释:无。

题解 1

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

#include <iostream>
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;
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛算粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值