CCF模拟题73. 写出来吧

tech2022-08-27  109

【问题描述】

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

【输入形式】

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

【输出形式】

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

【样例输入】

1234567890987654321123456789 【样例输出】

yi san wu 【样例说明】 友情提示汉语拼音

0~9:ling yi er san si wu liu qi ba jiu

输入用字符串比较合适,然后取出数字拿来相加 把和的每一位再取出来,按对应拼音输出 因此难点在于这两次的变换

#include<iostream> using namespace std; int main(){ long long int t=0; string s,q[10]={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };//对应拼音 cin>>s; if(s=="0"){cout<<"ling";return 0;}//0是特殊情况 int l=s.length(); for(int x=0;x<l;x++){ t+=s[x]-'0'; } string a=""; while(t>0){ //取出每一位数字,用字符串形式存起来 char c=t%10+48; a+=c; t=t/10; } int ll=a.length(); for(int i=ll-1;i>0;i--){//从后往前输出数字对应的拼音 for(int j=0;j<10;j++){ if(a[i]-'0'==j){ cout<<q[j]<<" ";break; } } } for(int j=0;j<10;j++){//注意!!最后一个输出不能有空格!!! if(a[0]-'0'==j){ cout<<q[j];return 0; } } }
最新回复(0)