数组实现数字转人民币

今天期末考试结束,回忆一下这个曾经令我骄傲了好几天的作业…
这个记得上课时老师给了两个数组,一个装单位,一个装大写的零到九,可是在操作时顺序总是变来变去,不画方格就懵了。虽然画了方格,额…经过近两天的挣扎还是没有完成。所以跟室友大佬讨论了一下,突然来了灵感,删掉了老师的那个装单位的二维数组,把单位放在一个个小数组里面,这样就不用倒来倒去了。有了这个基础接下来就是把10位数以内的各种情况考虑在内,然后各种条件嵌套开始删多余的单位了,确实情况很多,条件很乱,于是调试了一遍又一遍,终于成功了,但是我也很难说清楚,只有在一遍又一遍的改进中才完成。上课老师又继续用他的办法给我们演示了一下,可是他用了一个新函数,我们不知道原来还有这么一个函数,怪不得用他的办法写两天都写不出来。
在这里插入图片描述
下面是我的作业:

#include "stdio.h"
#include "string.h"
#define N 10

int main()
{
	char Num[N+1];
	char Chn[21]="零壹贰叁肆伍陆柒捌玖";
	char zero[3]="零"; 
	char Result[4*N+1]="";
	char str[3];
	char tem[2*N+1]="圆拾佰仟万拾佰仟亿拾";
	char H[3];
	char A[3]="圆";char B[3]="拾";char C[3]="佰";char D[3]="仟";char E[3]="万";char F[3]="亿"; 
	printf("请输入你想要的钱数\n",N);
	scanf("%s",Num);
	
	if(strlen(Num)>10)
	{
		printf("欲望太大,满足不了 \n");
		return -1;
	}
	int i=0;
	if((Num[i]-'0')==0)
	{
	printf("请不要以零开头,我们满足不了你\n");
	return 0;
	}
	
	while(Num[i])
	{
		if(Num[i]<'0' || Num[i]>'9')
		{
			printf("输入错误 \n");
			return -2;
		}
		i++;
	}
	
	int n=i;
 
	i=0;
	while (Num[i])
	{
		if(Num[i]-'0')
		{
			
		str[0]=Chn[2*(Num[i]-'0')];
		str[1]=Chn[2*(Num[i]-'0')+1];
		str[2]='\0';
		strcat(Result,str);	
		 
		H[0]=tem[2*(n-i-1)];
		H[1]=tem[2*(n-i-1)+1];
		H[2]='\0';
		strcat(Result,H);
			i++;
		}
		else if(i==(n-5))
		{		
				if((Num[n-8]-'0')!=0 || (Num[n-7]-'0')!=0 || (Num[n-6]-'0')!=0 )
				{
				strcat(Result,E);
						i++; 
				}
				else if((Num[i+1]-'0')!=0)
				{
		 				strcat(Result,zero);
						 i++;
				}
				else
				i++;
		} 
		else if(i==(n-9))
		{
		             	strcat(Result,F);
						i++;
		}
		else if(i==(n-1))
		{
						strcat(Result,A);
						i++;
		}
		else if((Num[i+1]-'0')!=0)
		{
		 				strcat(Result,zero);
						 i++;
		}
		else
						i++;
	    
	}

	printf("结果是\n%s\n",Result);
	return 0;
}                   
                                           

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值