0
点赞
收藏
分享

微信扫一扫

1002 写出这个数 (20 分)

小贴贴纸happy 2022-01-16 阅读 71
c语言

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

输入格式:

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

输出格式:

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

输入样例:

1234567890987654321123456789

输出样例:

yi san wu
 

#include<stdio.h>
int main()
{
	char n;
	char name[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
	int i,j;
	int sum=0,test;//sum求和,test保护sum并辅助统计sum位数 
	int cnt=0;//记录sum位数 
	int t=1; 
	
	while((n=getchar())!='\n')//输入一串数字并求和 
	{
		sum+=n-48;
	}
	test=sum;
	while(test!=0)
	{
		cnt++;
		test/=10;
	}
	for(i=cnt;i>=1;i--)
	{
		for(j=1;j<=i-1;j++)
		{
			t*=10;
		}
		if(i!=1) //不是最后一位的都带个空格 
		{
			printf("%s ",name[sum/t]);
			sum%=t;//去除已经输出的位数 
			t=1;//初始化t 
		}
		else
		{
			printf("%s",name[sum%10]); 
		}
	}
	return 0;
} 

本来想用long型的,但是long型最多19位,不符合条件,于是就改用字符型输入了。

对于题目的理解就是先把n每位求和,然后分别输出每一位,数字和拼音一一对应(二维数组或者指针数组)_(:з」∠)_

举报

相关推荐

0 条评论