nyoj 题目1104 就我不坑



http://acm.nyist.net/JudgeOnline/problem.php?pid=1104

就我不坑

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 0
描述

as we all know ,就我不坑,呵呵,当然,这次我还是不坑,我只让你帮我翻译一下数字即可。

所谓翻译,就是将一个数字用中文读出来,很简单吧,快快AC吧。

数字的中文表示分别为:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿.

输入
int 范围内,保证没错,EOF。
输出
用我给你的中文写出来就好了
样例输入
10
1052
10000
样例输出
壹拾
壹仟零伍拾贰
壹万


#include<stdio.h>
#include<string.h>
#define MAX 100
char s[MAX];
void change()
{
	int n,i,j;
	while(s[0]=='0')
	{
		n=strlen(s);
		for(i=1;i<n;i++)
		s[i-1]=s[i];
		
		s[n-1]='\0';
	}
	
	n=strlen(s);
	char c[MAX];
	for(i=n-1,j=0;i>=0;i--)
	c[j++]=s[i];
	c[j]='\0';
	memset(s,'\0',sizeof(s));
	strcpy(s,c);
}
int main()
{
	char a[MAX][10]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 
	int n,i,j,k,H,L,judge;
	while(scanf("%s",&s)!=EOF)
	{
		change();//将前导零去掉,并倒置 
		n=strlen(s);
		if(n==0)//当输入为零时 
		{
			printf("零\n");
			continue; 
		}
		
		for(i=0,judge=0;i<n;i++)//要输出其中几个”万“,”亿“,”亿亿“,”亿亿亿“,”亿亿亿亿“ 
		if(s[i]!='0') judge+=1;
		
		for(i=n-1,H=i,L=i;i>=0;i--)
		{
			if(s[i]=='0'&&i%4!=0) 
			continue; 
			else 
			L=i;
			
			if(H>L&&H!=L+1&&s[L]!='0') printf("%s",a[0]);
			if(s[i]!='0') printf("%s",a[s[i]-'0']);
			
			if(i%4==3) printf("仟");
			else if(i%4==2) printf("佰"); 
			else if(i%4==1) printf("拾");
			else if(i%4==0&&judge!=0)
			{
			    if(i/4==1) printf("万");
			    else if(i/4==2) printf("亿");
			    else if(i/4==3) printf("亿亿");
				else if(i/4==4) printf("亿亿亿");
				else if(i/4==5) printf("亿亿亿亿");
				judge-=1;  
			} 
			
		    H=L;
				 
		}
		printf("\n");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值