1002. 写出这个数 (20)
2017-10-05 17:58
260 查看
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
核心函数:
由于用计算机来从最大位开始输出一个“不知道位数”比较难(我不知道怎么做~~),因此选择创建一个temp数组来依次存放从个位开始到最大位的值,之后再通过指针往前移动来输出拼音。由于格式的限制,则留下最后的个位单独输出。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
#include<stdio.h> #define NUM 100 //返回输出的数之和 int Sum_of_num(const char *s) { int sum = 0; while(*s != '\0') { sum += *s-'0'; s++; } return sum; } //返回输出数的位数 int Cnt_of_num(int sum) { int i = 10; int cnt = 1; while(sum/i != 0) { sum /= i; cnt++; } return cnt; } //输出拼音 void Put_out_chi(int sum,int cnt,char s[][5],int *temp) { int i = cnt; int j = sum; //存入sum值之后输出个位 while(cnt > 0) { //存入temp数组 *temp = sum%10; sum /= 10; temp++; cnt--; } temp--; cnt++; while(cnt != i) { //依次输出到十位 printf("%s ",s[*temp]); temp--; cnt++; } printf("%s",s[j%10]); } int main() { char number[NUM]; char chinese[][5] = {"ling","yi","er","san","si","wu","liu", "qi","ba","jiu"}; int temp[10]; scanf("%s",number); int sum,cnt; sum = Sum_of_num(number); cnt = Cnt_of_num(sum); Put_out_chi(sum,cnt,chinese,temp); return 0; }
核心函数:
void Put_out_chi(int sum,int cnt,char s[][5],int *temp)
由于用计算机来从最大位开始输出一个“不知道位数”比较难(我不知道怎么做~~),因此选择创建一个temp数组来依次存放从个位开始到最大位的值,之后再通过指针往前移动来输出拼音。由于格式的限制,则留下最后的个位单独输出。
相关文章推荐
- PAT 1002. 写出这个数 (20)
- 1002 写出这个数 (20)
- 1002. 写出这个数 (20)
- PAT乙级—1002. 写出这个数 (20)-native
- 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20) —— Java
- 1002. 写出这个数 (20)
- PAT乙级 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- PAT乙级1002(C语言)- 写出这个数 (20)
- PAT - 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- pat 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言