您的位置:首页 > 编程语言 > C语言/C++

pat 1002. 写出这个数 (20)

2017-07-29 19:42 357 查看


1002. 写出这个数 (20)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

CHEN, Yue

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

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。

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

输出样例:
yi san wu


c/c++:

#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
char a[102];
int b = 0 , c = 0;
int d [20];
int i;
cin >> a;
c = strlen(a);
for (int i = 0;i < c; i++)
{
b = b + a[i]-'0';
}
i=0;
while ( b != 0)
{
d[i] = b % 10;
b = b / 10;
i++;
}

for (int y = i-1;y >= 0;y--)
{
switch (d[y])
{
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;
}
if (y != 0)
cout << " ";
}
}

用c/c++写,其实难度不大,由于数据位数比较大,将其变成字符串,然后从字符串转化成数字,及减去'0'。

然后相加,分离位数,每一位转换成汉语拼音输出,注意空格的要求。

python:

num = raw_input()
d = []
sum = 0
for i in range(len(num)):
sum = int(num[i])+sum
sum = str(sum)
for i in range(len(sum)):
if sum[i] == '0':
print "ling",
if sum[i] == '1':
print "yi",
if sum[i] == '2':
print "er",
if sum[i] == '3':
print "san"
if sum[i] == '4':
print "si",
if sum[i] == '5':
print "wu",
if sum[i] == '6':
print "liu",
if sum[i] == '7':
print "qi",
if sum[i] == '8':
print "ba",
if sum[i] == '9':
print "jiu",
用python写更简单,直接字符串与数字之间类型转化,注意print的输入输出不换行的用法,在print “XXX”之后加一个“,”。(python 2.7)

代码已经测试通过
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT C++ python