PAT乙级1002 写出这个数(C语言)

1002 写出这个数 (20 分)

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

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

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

代码部分

#include<stdio.h>
#include<string.h>
int main()
{
	int a[3],i,j=0,sum=0;//a数组用来存和的每一位数字
	char n[101];
	gets(n);
	for(i=0;i<strlen(n);i++)
		sum=sum+n[i]-'0';//每一位读出来并且累加。-'0'是将字符型数字转为整型。
	while(sum!=0)
	{
		a[j++]=sum%10;
		sum=sum/10;
	}
	for(i=j-1;i>=0;i--)
	{
		switch(a[i])
		{
			case 0:printf("ling");if(i!=0) printf(" ");break;
			case 1:printf("yi");if(i!=0) printf(" ");break;
			case 2:printf("er");if(i!=0) printf(" ");break;
			case 3:printf("san");if(i!=0) printf(" ");break;
			case 4:printf("si");if(i!=0) printf(" ");break;
			case 5:printf("wu");if(i!=0) printf(" ");break;
			case 6:printf("liu");if(i!=0) printf(" ");break;
			case 7:printf("qi");if(i!=0) printf(" ");break;
			case 8:printf("ba");if(i!=0) printf(" ");break;
			case 9:printf("jiu");if(i!=0) printf(" ");break;
		}
	}
	return 0;
} 

运行结果
在这里插入图片描述
个人体会
这题思路就是先输入这串数字,然后遍历累加求出和。再对和进行遍历输出每一位数字,之后使用一个switch语句,输出对应的拼音。

你可能感兴趣的:(PAT乙级(C语言),PAT,乙级)