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

来源:互联网 发布:韩庚 王凯 知乎 编辑:程序博客网 时间:2024/06/06 04:48

题目

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);    }}
原创粉丝点击