标签:case PAT 拼音 int break maxn printf 字符串 1002
题目>>
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
思路>>
①题目给出的n是小于10的100次方的,很明显不能用int型或者long long 型来表示,10的100次方是一个101位的数,故考虑用字符数组来存放这个数。
②输入n后将每一位求和,注意字符转数字的方法:‘1’-‘0’=1.
③将sum从低位到高位存入int型数组(用字符数组会出错?),输出对应拼音。
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=110; 4 int main(){ 5 char n[maxn]; 6 scanf("%s",n); 7 int len=strlen(n); 8 int sum=0; 9 for(int i=0;i<len;i++){ 10 sum+=(n[i]-'0'); 11 } 12 int k[10]; 13 int j=0; 14 while(sum!=0){ 15 k[j++]=sum%10; 16 sum/=10; 17 } 18 for(int i=j-1;i>=0;i--){ 19 switch(k[i]){ 20 case 0:printf("ling");break; 21 case 1:printf("yi");break; 22 case 2:printf("er");break; 23 case 3:printf("san");break; 24 case 4:printf("si");break; 25 case 5:printf("wu");break; 26 case 6:printf("liu");break; 27 case 7:printf("qi");break; 28 case 8:printf("ba");break; 29 case 9:printf("jiu");break; 30 } 31 if(i>0) printf(" "); 32 } 33 }
当然,也可以用字符数组来存放拼音。
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=110; 4 int main(){ 5 char n[maxn]; 6 scanf("%s",n); 7 int len=strlen(n); 8 int sum=0; 9 for(int i=0;i<len;i++){ 10 sum+=(n[i]-'0'); 11 } 12 int k[10]; 13 int j=0; 14 while(sum!=0){ 15 k[j++]=sum%10; 16 sum/=10; 17 } 18 char num[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; 19 for(int i=j-1;i>=0;i--){ 20 printf("%s",num[k[i]]); 21 if(i>0) printf(" "); 22 } 23 }
标签:case,PAT,拼音,int,break,maxn,printf,字符串,1002 来源: https://www.cnblogs.com/taiga/p/12641612.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。