您的位置:首页 > 其它

1002. 写出这个数 (20)练习

2015-12-17 14:03 330 查看
题目如下:

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

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

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

输出样例:
yi san wu

分析题目要点:
1、自然数n按char读入;

2、在ASCII码表中,0-9是从48-57,所以每一步逐位求和都要减去48;

3、输出要求每个拼音数字之间有1空格,所以先输出第一个拼音数字,后面的循环输出空格和拼音数字。

代码如下:

<span style="font-size:14px;">#include <stdio.h>
#include <string.h>

int main()
{
char ch[100]; //read input number as char type
int a[5]; //pinyin
int n = 0; // sum
char pinyin[][9] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
int i; //count length of input number
int t = 0; //count length of sum

gets(ch);

for(i = 0; i < strlen(ch); i++){
n = n + ch[i] - 48; //number as char start from 48 in ASCII
}
while(n!=0){
a[t] = n % 10;
n = n / 10;
t++;
}
printf("%s", pinyin[a[t-1]]); //first pinyin

for(i = t-2; i >= 0; i--){
printf(" %s", pinyin[a[i]]);
}

return 0;
}</span><span style="font-size:18px;font-weight: bold;">
</span>


答案正确。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: