(C++)PAT乙级 1002. 写出这个数 (20) [字符串处理]

读⼊⼀个⾃然数 n ,计算其各位数字之和,⽤汉语拼⾳写出和的每⼀位数字。
输⼊格式:
每个测试输⼊包含 1 个测试⽤例,即给出⾃然数 n 的值。这⾥保证 n⼩于10的100次幂
输出格式:
在⼀⾏内输出 n 的各位数字之和的每⼀位,拼⾳数字间有 1 空格,但⼀⾏中最后⼀个拼⾳数字后没
有空格。
输⼊样例:
1234567890987654321123456789
输出样例:
yi san wu

思路:

读取未知长度的数据:用字符串string储存;

求和:for循环,停止条件为字符串长度,注意字符串数据储存类型为ASCII码,因此注意转换;

用汉语拼音对应求和所得的数字并打印出来:初始化一个拼音的字符串数组,将sum转化为字符串,再次利用for循环,将字符串数组读出。


相关知识补充:

1.字符串:

对于C与C++来说是没有字符串型的数据类型的,在C++中是通过包含std命名空间中的标准库,然后用string来定义(使用头文件#include<string>),或者使用数组或用指向数组的指针来实现字符串变量的定义及使用。

2.求数组长度:str.length()函数或str.size()函数

string str;//定义一个字符串

int length;//定义一个整数

length=str.length();//运用字符串函数得到字符串数组长度,类型为整数

3. to_string函数:将数值转化为字符串。返回对应的字符串

string num;//定义一个字符串

int sum;//定义一个整数;

num=to_string(sum);//将整数sum转化为字符串

4.字符串数组加和:注意:字符串数组均以ASCII码储存,所以若直接加和,ASCII码对应的数字加和。因此,只要是字符串数组加减,均需要( - ' 0 ' ) .如:输入数字123,初始化sum=0,将每一位进行加和,输出结果:

123
1
sum=49
2
sum=99
3
sum=150
length = 3


#include <iostream>
#include <string>
using namespace std;
int main()
{
	string num;
	cin >> num;
	int sum=0;//忘记初始化
	string str[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
	for (int i = 0; i < num.length(); i++)//求和
		sum += num[i] - '0';
	string nums = to_string(sum);//整数型sum转化为字符串型,并赋给新字符串nums
	for (int i = 0; i < nums.length(); i++)//输出汉字拼音
	{
		if (i != 0) cout << " ";//开头没有空格
		cout << str[nums[i] - '0'];
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值