PAT练习题002
来源:互联网 发布:shell脚本与python 编辑:程序博客网 时间:2024/06/07 07:43
PAT002. 写出这个数
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
首先,将输入的字符串转化为数组,然后求和,再分别求取百位、十位和个位上的数字(因为题目中将输入限制在10^100以内,所以相加之后的数字不会超过一千,因此无需考虑千位,这样就方便了很多)最后利用switch语句来获得拼音的输出
其中需要注意的地方有两个:
一是,字符串转化为数组再求和,每个字符串都要减掉ACSII中
0
的编码
二是,相加之后的和有多种情况,可能是三位数两位数甚至一位数,要分情况讨论
提交代码:
#include <iostream>#include <string>using namespace std;int sswitch(int a){switch(a){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;default: cout<<"jiu"; break;}}int main(){ string num; cin>>num; int sum=0; int len=num.length(); for(int i=0;i<len;i++) sum+=num[i]-'0'; int num1,num2,num3; num1=sum/100; num3=sum%10; num2=(sum%100-num3)/10; if(sum>99){ sswitch(num1); cout<<" "; sswitch(num2); cout<<" "; sswitch(num3); } if(sum>9&&sum<100){ sswitch(num2); cout<<" "; sswitch(num3); } if(sum<10) sswitch(num3); return 0;}
阅读全文
1 0
- PAT练习题002
- PAT练习题概览
- PAT练习题概览
- PAT练习题:打印沙漏
- PAT甲级练习题1003
- PAT练习题001
- PAT练习题003
- PAT练习题004
- PAT 乙级练习题.1005
- PAT乙级练习题.1006
- PAT.乙级练习题.1007
- PAT乙级练习题.1008
- PAT乙级练习题B1040. 有几个PAT
- PAT甲级练习题A1025. PAT Ranking (25)
- PAT乙级练习题B1004.成绩排名
- PAT乙级练习题B1020. 月饼
- PAT乙级练习题B1028.人口普查
- PAT乙级练习题B1046. 划拳
- 4.x版eclipse在windows下启动报a java runtime environment(JRE)的有效解决办法
- Android 高仿微信 你可能要发送的图片
- leetcode 53. Maximum Subarray DP+最大子串和
- 进入DOS世界
- Docker+Gogs搭建个人Git服务
- PAT练习题002
- 使用json-lib将Java对象转json死循环问题
- git
- 重新编写IT笔记
- dfs+数学? 单
- #NOIP模拟赛#吃糖果candy(缩小选边范围--mod区间)
- AppiumLibrary常用关键字
- 9.2题解
- virsh 查看cpu架构,以及guest vm numa应分配架构