PAT学习———乙级(中文)-1002

1002 写出这个数 (20分)

来源:https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384

题目

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

分析

1.读取一个正整数,计算其各位数字之和,则需用字符串形式来表示正整数n。
2.计算各位数字之和,需要将输入的字符串每位转化为数字,进行相加。
3.用汉语拼音写出和的每一位数字,则表明每一个数字都需对应一个汉语字符串,则可用结构体来表示。
4.用汉语拼音表示每一位数字,则要将得到的和重新转化为字符串。

输入格式

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10的100次方。

输出格式

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

输入样例

1234567890987654321123456789

输出样例

yi san wu

代码


#include <stdio.h>
#include <stdlib.h>
typedef struct _number{
	char chinese[4];
	int num;
}number;

int main()
{
	number Number[]={
		{"ling",0},{"yi",1},{"er",2},{"san",3},{"si",4},{"wu",5},{"liu",6},{"qi",7},{"ba",8},{"jiu",9}
	};
	char test[100];
	int i=0;
	int total=0;
	for(i=0 ; (scanf("%c",&test[i])!=EOF) && (test[i]!='\n') ; i++){
		total=total+(test[i]-'0');
	}	
	char s[100];
	sprintf(s, "%d", total); 
	int x=0;
	int m=0; 
	for(x=0;s[x]!='\0';x++){
		m=s[x]-'0';
		if(x!=0){
			printf(" ");
		}
		printf("%s",Number[m].chinese);
		
	}
	return 0;

 } 

你可能感兴趣的:(PAT-乙级)