1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
<pre name="code" class="cpp">#include "iostream"
#include "cstring"
using namespace std;
const int N_MAX=3;
int main()
{
int count, sum, length,temp,i;
char num[N_MAX]; //即使是99个9排列,和最多也不会达到1000,所以一个三位数组就可以了
sum = 0;
char n[100] = {'0'};
cin>>n;
length = strlen(n);
if(length>=100)
return o;
for ( i = 0; i < length; i++)
{
sum += n[i]-48;
}
count = 0;
temp = sum;
while (temp) //判断和一共有多少位
{
temp /= 10;
count++;
}
for ( i = count-1; i >=0; i--)
{
num[i] = sum % 10+'0'; //加上0所对应的Ascll码转化为字符表示的数字
sum /= 10;
}
for ( i = 0; i < count; i++)
{
switch ((int)num[i]-48)
{
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;
default:
break;
}
}
cout << "\b"; //题目要求的退格
return 0;
}
Adeng:这个程序在我的本地编译器没问题,可一旦上传练习服务器就出现编译不过,上网查了一下,有可能是linux下的G++对“\b”这个转意字符的不支持吧。所以又将其修改了一下。
</pre><pre name="code" class="cpp">方法2:
<pre name="code" class="cpp"><pre name="code" class="cpp">#include<iostream>
#include<string>
using namespace std;
int main()
{
int sum = 0;<span style="white-space:pre"> </span>//用于求和<span style="white-space:pre"> </span>
string s; //输入的字符串<span style="white-space:pre"> </span>
int count = 0;
char *pin[10] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
//也可以使用二维数组:<span style="font-family: Arial, Helvetica, sans-serif;">char pin[ ][10] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };</span>
char *result[3];
cin >> s;
for (int i = 0; i<s.length(); i++)
{
sum += (s[i]) - 48;
}
while (sum != 0)
{
int tmp = sum % 10;
result[count++] = pin[tmp];
sum /= 10;
}
while (count != 0) //采用循环输出,最后一个不加空格符号
{
if (count - 1 != 0)
cout << result[--count] << " ";
else
cout << result[--count];
}
system("pause");
return 0;
}