1002 写出这个数 (20 分)

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

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

输入格式:

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

输出格式:

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

样例:">样例:">样例:">输入样例:

1234567890987654321123456789

输出样例:

yi san wu

题目分析:

1.n的长度可以特别大,所以当然是用字符串了

2.假设n最长且最大,和为900,所以用一个长度为三的数组来存放和的每一位数字

3.写一个打印的函数来打印yi、er、san等等(Switch---case)

4.解题完成

代码如下:


C语言:


#include <stdio.h>
#include <string.h>
void print(int x) {
  switch (x) {
    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;
    case 9:
      printf("jiu");
      break;
  }
}
int main() {
  char s[100];
  scanf("%s", s);
  int sum = 0;
  for (int i = 0; i < strlen(s); i++) {
    sum += s[i] - '0';
  }
  int a[3], t = 0;
  if (sum == 0) {
    printf("ling");
  } else {
    while (sum) {
      a[t++] = sum % 10;
      sum /= 10;
    }
    print(a[t - 1]);
    for (int i = t - 2; i >= 0; i--) {
      printf(" ");
      print(a[i]);
    }
  }
}


C++:


#include <iostream>
using namespace std;
void print(int x) {
  switch (x) {
    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;
  }
}
int main() {
  string s;
  cin >> s;
  int sum = 0;
  for (int i = 0; i < s.length(); i++) {
    sum += s[i] - '0';
  }
  int a[3], t = 0;
  if (sum == 0) {
    cout << "ling";
  } else {
    while (sum) {
      a[t++] = sum % 10;
      sum /= 10;
    }
    print(a[t - 1]);
    for (int i = t - 2; i >= 0; i--) {
      cout << " ";
      print(a[i]);
    }
  }
}
相关文章
|
IDE Java Linux
Seata常见问题之重新打包以单独用jar来部署如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
482 1
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
1366 3
新年Html动态特效祝福送给你
新年Html动态特效祝福送给你
627 0
新年Html动态特效祝福送给你
|
SQL 关系型数据库 分布式数据库
安全性方面深度测评
安全性方面深度测评
|
关系型数据库 MySQL 分布式数据库
什么是PolarDB MySQL企业版
PolarDB MySQL版是阿里巴巴自研的云原生HTAP数据库。PolarDB MySQL版100%兼容原生MySQL的多个版本,包括MySQL 5.6、MySQL 5.7和MySQL 8.0。PolarDB MySQL版的企业版基于云原生架构、计算存储分离、软硬件一体化设计,为用户提供具备超高弹性和性能、高可用和高可靠保障、高性价比的数据库服务。 产品架构
303 0
|
算法
【MATLAB】WOA鲸鱼算法优化的VMD信号分解算法
【MATLAB】WOA鲸鱼算法优化的VMD信号分解算法
1277 0
【MATLAB】WOA鲸鱼算法优化的VMD信号分解算法
|
Ruby
Ruby 教程 之 Ruby 条件判断 2
Ruby unless 修饰符
109 0
|
JavaScript 网络架构
vue3动态路由配置
动态路由是指在运行时根据某些条件创建或修改路由。这对于需要动态生成路由的应用程序非常有用,例如基于用户权限的路由控制。
271 1
|
算法 C语言
C语言 PTA刷题(数组判重并输出重复元素以及个数)
C语言 PTA刷题(数组判重并输出重复元素以及个数)
C语言 PTA刷题(数组判重并输出重复元素以及个数)
|
JavaScript 前端开发