B1002 写出这个数 (20分)

数学题-各位数相加

1. 原文

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1
1234567890987654321123456789 

输出样例:

1
yi san wu

2. 解析思路

n的可能取值超过了int,long long的表示范围,故采用字符串 ch[110]

取出字符串的每一位相加得一个总数num

取出num的每一位。用do/while防止遗漏0。%10取到的是个位。

ans数组中存储的数是从个数开始的倒置数

从后往前输出对应数

3. AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include<cstdio>
char match[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char ch[110];
int ans[110];
int main(){

scanf("%s",ch);
int num=0;
for(int i=0;ch[i]!=0;i++){
num+=ch[i]-'0';
}
int cnt=0;
do{
ans[cnt++]=num%10;
num/=10;

}while(num);
for(int i=cnt-1;i>=0;i--){
printf("%s",match[ans[i]]);
if(i>0){
printf(" ");
}else{
printf("\n");
}

}
return 0;
}
本文结束  感谢您的阅读
  • 本文作者: Wang Ting
  • 本文链接: /zh-CN/2019/09/06/B1002/
  • 发布时间: 2019-09-06 16:42
  • 更新时间: 2021-10-29 14:14
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!