PAT乙级(Basic)题库---1002

xiaoxiao2021-02-28  156

题目

1002-写出这个数

解题思路

由于该数最大为100位的十进制数,不能直接用整形读入,因此采用字符串的方式读入,读入的字符串中的每个字符通过减去字符‘0’的操作得到真正的整数值,再来累加获得各位和。由于最大为100位的十进制数,各位和最大为999,得到的和结果不会超过1000,基本上得到和结果的各位可以直接输出,只是要注意和结果首位(百位或十位)为零的特殊情况就好。

代码

#include<iostream> #include<string.h> #include<cstring> using namespace std; //将个位数转换为拼音显示 void tran(int unit) { switch(unit) { 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; } } void conv(int num) { //得到各位数字,百位,十位和各位 int hundreds,decade,unit; hundreds=num/100; decade=num%100/10; unit=num%100%10; //百位不为零 if(hundreds) { tran(hundreds); cout<<" "; tran(decade); cout<<" "; tran(unit); cout<<"\n"; } //百位为零,十位不为零 else if(decade) { tran(decade); cout<<" "; tran(unit); cout<<"\n"; } //百位和十位均为零 else { tran(unit); cout<<"\n"; } } int main() { string a; int sum; while(cin>>a) { sum=0; for(int i=0;i < a.length();i++) { //计算各位和,读入的是字符串,减字符‘0’ sum+=(a[i]-'0'); } //将结果以拼音输出 conv(sum); } }
转载请注明原文地址: https://www.6miu.com/read-46956.html

最新回复(0)