#题目
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10 <math> <semantics> <mrow> <msup> <mn> 1 </mn> </msup> </mrow> <annotation encoding="application/x-tex"> ^1 </annotation> </semantics> </math>1 <math> <semantics> <mrow> <msup> <mn> 0 </mn> </msup> </mrow> <annotation encoding="application/x-tex"> ^0 </annotation> </semantics> </math>0 <math> <semantics> <mrow> <msup> <mn> 0 </mn> </msup> </mrow> <annotation encoding="application/x-tex"> ^0 </annotation> </semantics> </math>0。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
#分析:
n太长了只有字符串输入,然后再挨个加每一位的数字(注意转换),最后再输出取余存储逆序输出。
亮点是把数字对应的字符串开全局变量存储起来
#代码(CPP)
#include<iostream>
#include<string.h>
using namespace std;
char name[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int main(){
string a;
char b[5][5];
int sum=0;
int k=0;
cin>>a;
for(int i=0;a[i]!='\0';i++)
sum += a[i]-'0';
while(sum!=0){
int t=sum%10;
sum/=10;
strcpy(b[k++],name[t]);
}
for(int i=k-1;i>=0;i--){
if(i!=k-1)
cout<<" ";
cout<<b[i];
}
return 0;
}
#代码(Java)
import java.util.*;
public class Main {
static String name[] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String ans[] =new String[5];
int sum=0;
int k=0;
String a=in.next();
for(int i=0;i<a.length();i++)
sum += a.charAt(i)-'0';
while(sum!=0) {
ans[k++]=name[sum%10];
sum/=10;
}
for(int i=k-1;i>=0;i--) {
if(i!=k-1)
System.out.print(" ");
System.out.print(ans[i]);
}
in.close();
}
}