whenever

  • Home

  • Tags21

  • Categories6

  • Archives122

  • About

PAT乙级1002 || 写出这个数(详解,C/C++示例,测试点分析)

Posted on 2019-08-09 In PAT

写出这个数

题目描述

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

输入格式

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

输出格式

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

输入样例

1
12345678901234567

输出样例

1
qi san

问题解决

解题思想

此题重点需要解决以下问题:

  1. 大数输入问题
    $10^{100}$ 用int和long long都是远远不够的,因此用字符数组来输入,然后再转换成整数
  2. 数字与拼音的转换
    本题用最基本的方法,使用switch开关语句实现转换
  3. 拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
    此类问题一般使用以下代码实现:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(i=0; i < n; i++){
    printf("%d", a[i]);
    if(i < n-1){
    printf(" ");
    }
    else{
    printf("\n");
    }
    }

知识拓展

  • 绝对值在 $10^9$范围以内的整数都可以定义成int型
  • 如果在 $10^9$以上,在 $10^{18}$ 以内用long long型来存放

代码示例(C)

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#define N 101
int main()
{
int sum=0,i=0,a[N];
char str[N];
gets(str);//以字符的方式读入大整数
while(str[i]!='\0'){
sum+=str[i]-'0';
i++;
}
i=0;
do{
a[i]=sum%10;
sum=sum/10;
i++;
}while(sum);//将sum的每一位逆向存入数组a中
i--;//循环退出时i多加1
do{
switch(a[i])
{
case 0:
printf("ling");break;
case 1:
printf("yi");break;
case 2:
printf("er");break;
case 3:
printf("san");break;
case 4:
printf("si");break;
case 5:
printf("wu");break;
case 6:
printf("liu");break;
case 7:
printf("qi");break;
case 8:
printf("ba");break;
default:
printf("jiu");
}
if(i>0){
printf(" ");
}
else{
printf("\n");
}//每两个输出之间用空格隔开,最后不加空格
i--;
}while(i>=0);
return 0;
}

题目来源:PAT乙级1002
作者:CHEN, Yue
单位:浙江大学

稀罕作者
Mengzhao Wang WeChat Pay

WeChat Pay

Mengzhao Wang Alipay

Alipay

# C/C++ # PAT # 编程
PAT乙级1001 || 害死人不偿命的(3n+1)猜想(详解,C/C++示例,测试点分析)
PAT乙级1003 || 我要通过!(详解,C/C++示例,测试点分析)
  • Table of Contents
  • Overview
Mengzhao Wang

Mengzhao Wang

Try? All the way !
122 posts
6 categories
21 tags
  1. 1. 写出这个数
    1. 1.1. 题目描述
    2. 1.2. 输入格式
    3. 1.3. 输出格式
    4. 1.4. 输入样例
    5. 1.5. 输出样例
    6. 1.6. 问题解决
      1. 1.6.1. 解题思想
      2. 1.6.2. 知识拓展
      3. 1.6.3. 代码示例(C)
© 2021 Mengzhao Wang