1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
解题过程
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
void py(int n);
int main(int argc, char *argv[])
{
int len,i,sum=0,b[100],j=0;
char ch[1000];
gets(ch);
len=strlen(ch);
i=len;
for(i=0;i<len;i++)
{
sum=sum+(ch[i]-'0');
}
while(sum!=0)
{
b[j]=sum%10;
sum=sum/10;
++j;
}
for(int i=j-1;i>0;--i){
py(b[i]);
cout<<" ";
}
py(b[0]);
cout<<endl;
return 0;
}
void py(int n)
{
switch(n)
{
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;
}
}
很遗憾,在提交时报错,要是哪位大佬能够解释一下就好了
代码实现
#include <iostream>
#include <stdlib.h>
#include <string>
#include <stdio.h>
using namespace std;
void py(int n);
int main(int argc, char *argv[])
{
int len, i, sum = 0, b[100], j = 0;
string ch;
cin >> ch;
len = ch.length();
i = len;
for (i = 0; i<len; i++)
{
sum = sum + (ch[i] - '0');
}
while (sum != 0)
{
b[j] = sum % 10;
sum = sum / 10;
++j;
}
for (int i = j - 1; i>0; --i) {
py(b[i]);
cout << " ";
}
py(b[0]);
cout << endl;
return 0;
}
void py(int n)
{
switch (n)
{
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;
}
}