B1002 写出这个数
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
1 #include<cstdio> 2 #include<string.h> 3 #include<string> 4 #include<map> 5 #include<iostream> 6 using namespace std; 7 char str[110]; 8 int main() 9 { 10 map<int,string> mp; 11 mp[0]="ling"; 12 mp[1]="yi"; 13 mp[2]="er"; 14 mp[3]="san"; 15 mp[4]="si"; 16 mp[5]="wu"; 17 mp[6]="liu"; 18 mp[7]="qi"; 19 mp[8]="ba"; 20 mp[9]="jiu"; 21 while(scanf("%s",str)!=EOF){ 22 int len=strlen(str); 23 int sum=0,r[100],k=0; 24 for(int i=0;i<len;i++){ 25 sum=sum+(str[i]-'0'); 26 } 27 while(sum!=0){ 28 int a=sum%10; 29 r[k++]=a; 30 sum=sum/10; 31 } 32 for(int i=k-1;i>=0;i--){ 33 cout<<mp[r[i]]; 34 if(i!=0){ 35 cout<<" "; 36 } 37 } 38 cout<<endl; 39 } 40 return 0; 41 }
Mist Note: map函数是一个好东西。留意输出格式,还有循环取出每一位数字。