PAT乙级1002写出这个数
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
样例:
输入
1234567890987654321123456789
输出
yi san wu
知识:
#include<string> std::to_string(int) std::to_string(long) std::to_string(long long) std::to_string(float) std::to_string(double) std::to_string(long double)
//#include<cstdlib> //标准库函数,但是使用时一般会配合<string> std::stoi std::stol std::stoll //看名字就知道对应为int,long,long long int stoi (const string& str, size_t* idx = 0, int base = 10) //idx是一个指针,该指针指向一个size_t类型的对象 //传入指针地址后,该对象的值会被修改为string中数值后的第一个字符所在位置 //例如stoi("123abcd",&p),返回的p指向a所在 //也可以把p的位置理解为数值部分的结束位置 //int base是进制基数,默认10进制没什么好说的 //需要注意的是stoi实质上是调用stol的
参考:https://blog.csdn.net/w55100/article/details/79886788
代码:
#include<bits/stdc++.h> using namespace std; int main(){ string pin[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; string n; cin>>n; int sum=0; for(int i=0;i<n.length();i++){ sum+=n[i]-'0'; } string num=to_string(sum); for(int i=0;i<num.length();i++){ if(i!=0) cout<<" "; cout<<pin[num[i]-'0']; } }