PAT(乙级)1002
来源:互联网 发布:手机淘宝怎么删除账号 编辑:程序博客网 时间:2024/06/05 10:48
1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
分析:这里要求n小于10^100,这个要求使得我们无法使用任何一种基本的数字数据类型来进程存储。因此考虑将数字保存为字符串形式。当我们计算每一位数字之和的时候,就将字符形式的数字转换为整形数字。由于n小于10^100,当每一位数字取9,并且n取10^100时,这个时候数字将会有101(1后面100个0),所以计算得到的各位数字之和为:9×101=909,因此,这个数字使用int保存足以。至于显示为汉语拼音,则使用数组保存0~9这10个拼音即可。将和的三位分解出来,分别去匹配汉语拼音即可。大致思路就是这样。下面上代码。
代码如下:
#include<stdio.h>#include<string.h>#define size 101int main(void){char num[size];int number = 0;int num1[3];//保存和分解的三位数字int i;const char str[10][5] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};scanf("%s",num);for(i = 0; i < strlen(num); i++){number += num[i];//对每一位字符求和}number = number - (30*i);//转换成int形式的数字//分离每一位num1[2] = number % 10;num1[1] = (number/10) % 10;num1[0] = number / 100;if (0 == num1[0])//百位为0{if (0 == num1[1])//十位为0{printf("%s", str[num1[2]]);//仅仅输出个位}else printf("%s %s", str[num1[1]], str[num1[2]]);//输出个位和十位}else{printf("%s %s %s", str[num1[0]], str[num1[1]], str[num1[2]]);//三位全输出}return 0;}
阅读全文
0 0
- PAT(乙级)1002
- PAT乙级(Basic Level)1002(C++)
- PAT(乙级)1002 数字分类 (20)
- PAT乙级(Basic)题库---1002
- PAT乙级1002
- PAT乙级1002
- PAT 乙级 1002
- PAT 乙级试题 1002
- PAT 乙级1002
- PAT乙级1002
- PAT 乙级 1002
- PAT 乙级 1002
- PAT乙级1002
- PAT乙级练习1002
- PAT乙级1002
- PAT 乙级练习 1002
- PAT(乙级)1001
- PAT(乙级)1004
- Android startActivityForResult用法详解
- C语言程序设计(49)
- Unity Shader入门精要学习笔记
- Oracle时间日期函数及sql语句
- 工作两年后的工作感受
- PAT(乙级)1002
- C++Builder 生成64位Windows应用
- 3.3.7--饭卡--01背包
- OOP和MVC区别
- Source Insight 4.0
- 闲来无事写个JS玩玩儿,小二上代码咧~~~
- 3.从分布式一致性到共识算法(一)
- 非Controller中调用Service
- Android源码基础解析之apk安装流程