作业训练三 编程题 18. 写出来吧
【问题描述】
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
【输入形式】
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10的100次方。
【输出形式】
在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
【样例输入】
1234567890987654321123456789
【样例输出】
yi san wu
【样例说明】
友情提示汉语拼音
0~9:ling yi er san si wu liu qi ba jiu shi
相关知识:
1.字符串与整型数转换当中
stringstream函数的使用:
特别注意: 同一stream进行多次转换应调用成员函数变量名
.clear()
#include <iostream>
#include <string>
#include <sstream> //要使用stringstream流应包含此头文件
using namespace std;
int main()
{
stringstream stream; //声明一个stringstream变量
int n;
string str;
//string转int
stream << "1234"; //向stream中插入字符串"1234"
stream >> n; //从stream中提取刚插入的字符串"1234"
//并将其赋予变量n完成字符串到int的转换
cout <<"stringstream string转int: "<< n << endl; //输出n
stream.clear(); //同一stream进行多次转换应调用成员函数clear
//int转string
stream << 1234; //向stream中插入整型数1234
stream >> str; //从steam中提取刚插入的整型数
//并将其赋予变量str完成整型数到string的转换
cout << "stringstream int转string: " << str << endl; //输出str
system("pause");
return 0;
}
2. stringstream的拓展应用:
字符串的拼接
解代码:
#include<bits/stdc++.h>
#include<sstream>
using namespace std;
int main()
{
long long int a;
string str;
cin >> str;
long int sum=0;
for (long long int i = 0; i < str.length(); i++)
{
long long int num_x1 = 0;
stringstream x1;
x1 << str[i];
x1 >> num_x1;
sum += num_x1;
x1.clear();
}
stringstream x2;
x2 << sum;
string sum_str;
x2 >> sum_str;
for (long long int i = 0; i < sum_str.length() - 1; i++)
{
if (sum_str[i] == '1')
{
cout << "yi ";
}
if (sum_str[i] == '0')
{
cout << "ling ";
}if (sum_str[i] == '2')
{
cout << "er ";
}if (sum_str[i] == '3')
{
cout << "san ";
}if (sum_str[i] == '4')
{
cout << "si ";
}if (sum_str[i] == '5')
{
cout << "wu ";
}if (sum_str[i] == '6')
{
cout << "liu ";
}if (sum_str[i] == '7')
{
cout << "qi ";
}if (sum_str[i] == '8')
{
cout << "ba ";
}if (sum_str[i] == '9')
{
cout << "jiu ";
}
}
if (sum_str[sum_str.length()-1] == '1')
{
cout << "yi";
}
if (sum_str[sum_str.length() - 1] == '0')
{
cout << "ling";
}if (sum_str[sum_str.length() - 1] == '2')
{
cout << "er";
}if (sum_str[sum_str.length() - 1] == '3')
{
cout << "san";
}if (sum_str[sum_str.length() - 1] == '4')
{
cout << "si";
}if (sum_str[sum_str.length() - 1] == '5')
{
cout << "wu";
}if (sum_str[sum_str.length() - 1] == '6')
{
cout << "liu";
}if (sum_str[sum_str.length() - 1] == '7')
{
cout << "qi";
}if (sum_str[sum_str.length() - 1] == '8')
{
cout << "ba";
}if (sum_str[sum_str.length() - 1] == '9')
{
cout << "jiu";
}
return 0;
}