题目
1002-写出这个数
解题思路
由于该数最大为100位的十进制数,不能直接用整形读入,因此采用字符串的方式读入,读入的字符串中的每个字符通过减去字符‘0’的操作得到真正的整数值,再来累加获得各位和。由于最大为100位的十进制数,各位和最大为999,得到的和结果不会超过1000,基本上得到和结果的各位可以直接输出,只是要注意和结果首位(百位或十位)为零的特殊情况就好。
代码
#include<iostream>
#include<string.h>
#include<cstring>
using namespace std;
void tran(
int unit)
{
switch(unit)
{
case 0:
cout<<
"ling";
break;
case 1:
cout<<
"yi";
break;
case 2:
cout<<
"er";
break;
case 3:
cout<<
"san";
break;
case 4:
cout<<
"si";
break;
case 5:
cout<<
"wu";
break;
case 6:
cout<<
"liu";
break;
case 7:
cout<<
"qi";
break;
case 8:
cout<<
"ba";
break;
case 9:
cout<<
"jiu";
break;
}
}
void conv(
int num)
{
int hundreds,decade,unit;
hundreds=num/
100;
decade=num%
100/
10;
unit=num%
100%
10;
if(hundreds)
{
tran(hundreds);
cout<<
" ";
tran(decade);
cout<<
" ";
tran(unit);
cout<<
"\n";
}
else if(decade)
{
tran(decade);
cout<<
" ";
tran(unit);
cout<<
"\n";
}
else
{
tran(unit);
cout<<
"\n";
}
}
int main()
{
string a;
int sum;
while(
cin>>a)
{
sum=
0;
for(
int i=
0;i < a.length();i++)
{
sum+=(a[i]-
'0');
}
conv(sum);
}
}