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;
}