1002 写出这个数 (20 分)
读入一个正整数?n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数?n?的值。这里保证?n?小于?10100。
输出格式:
在一行内输出?n?的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
结尾无空行
输出样例:
yi san wu
结尾无空行
#include<iostream>
using namespace std;
void shuchu(int a)
{
switch(a)
{
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;
}
}
int main()
{
int i=0,a=0,c=0,d,b[3];
char str[1000];
cin >> str;
while(str[i]!='\0')
{
a=str[i]+a-'0';//和
i++;
}
if(a>=0&&a<=9)
shuchu(a);
else//计算和的位数
{
d=a/10;
while(d!=0)
{
d=d/10;
c=c+1;//这里用while循环的话d必须一开始就被赋值为a/10,不然往里面写d=d/10这句a的值没变,就是死循环了!!
}
i=c;//所以c是和的位数-1
while(a!=0)
{
b[i]=a%10;
a=a/10;
i--;
}
for(i=0;i<c+1;i++)
{
shuchu(b[i]);
if(i<c)
cout<<" ";
}
}
return 0;
}
个人认为我写的简洁一点?
|