C++ 第一章 NO.11 编写一个程序模拟支票输出。程序要求用户输入日期,姓名和支票的数量,然后模拟支票的形式输出以下信息,

//******************************************************************************************** 
//*程序作者:冰糖  
//*完成日期:2019年3月1日
//*章    节:第1章
//*题    号:习题11 
//*题    目:编写一个程序模拟支票输出。程序要求用户输入日期,姓名和支票的数量,然后模拟支票的形式输出以下信息,例如: 
//*          日期:2017年12月26日 
//*          姓名:张三 RMB1920.68 
//*          人名币:壹仟玖佰贰拾元陆角捌分 
//*          注:假设输入的金额中,最多只有两位小数。 
//*          输入有效性检验:输入金额的数量不能大于RMB10000. 
//******************************************************************************************** 
#include<iostream>
using namespace std;
#include<iomanip>
#include<string.h>
#include<math.h>
char *swap(int a);
char a[10];
int main()
{
	char *chinese(int n);
	int i,flag=0;
	int year,month,day;
	int rmb[20],money1; 
	float money;
	char name[10];
	cout<<"请输入年份:";
	cin>>year;
	cout<<"请输入月份:";
	cin>>month;
	cout<<"请输入天:";
	cin>>day;
	cout<<"请输入姓名:";
	cin>>name;
	cout<<"请输入支票数量(需小于10000元):";
	cin>>money;
	while(flag<30)//有效性检验
	{
		if(money>10000)
		{
			cout<<"输入的金额不能超过10000元,请重新输入支票数量:";
			cin>>money;
			flag++; 
		}
		else
			 break;
	}
	cout<<"\n\n****************************************************************************"<<endl;
	cout<<"日期:"<<year<<"年"<<month<<"月"<<day<<"日"<<endl; 
	cout<<"姓名:"<<name<<" RMB"<<fixed<<setprecision(2)<<money<<endl; 
	if(money==10000)//输出繁体数字
		cout<<"人民币:壹万元"<<endl;//首先解决特例的情况 
	//将数字分解存入数组rmb[];
	money1=money*100;
	for(i=0;money1>0;i++)
	{
		rmb[i]=money1%10;
		money1=money1/10;
	}
	flag=i;
	if(flag==6)//1:几千元
	{
		cout<<"人民币:";
		if(rmb[4]==0&&rmb[3]==0&&rmb[2]==0)
			cout<<swap(rmb[5])<<"仟元";
		else
			cout<<swap(rmb[5])<<"仟";
		if((rmb[4]!=0&&rmb[3]!=0)||(rmb[4]!=0&&rmb[2]!=0))//百 *****************************************
			cout<<swap(rmb[4])<<"佰";//十位不为零 或 个位不为零 
		else if(rmb[4]!=0)
			cout<<swap(rmb[4])<<"佰元";//十位为零 且个位不为零  
		if(rmb[3]!=0&&rmb[4]!=0&&rmb[2]!=0) //十 *****************************
			cout<<swap(rmb[3])<<"拾";//百位不为零 
		else if(rmb[3]!=0&&rmb[2]!=0)
			cout<<"零"<<swap(rmb[3])<<"拾";//个位不为零 
		else if(rmb[3]!=0&&rmb[2]==0) 
			cout<<swap(rmb[3])<<"拾元";//百位个位均为零 
		else if(rmb[3]!=0)
			cout<<"零"<<swap(rmb[3])<<"拾元";
		if(rmb[3]!=0&&rmb[2]!=0) //个 ******************************
			cout<<swap(rmb[2])<<"元";//十位不为零 
		else if(rmb[2]!=0)
			cout<<"零"<<swap(rmb[2])<<"元";//十位为零 
		if(rmb[1]!=0) 
			cout<<swap(rmb[1])<<"角";
		if(rmb[0]!=0) 
			cout<<swap(rmb[0])<<"分"; 
	 } 
	 if(flag==5)//2:几百元 350
	{
		cout<<"人民币:";
		if(rmb[3]==0&&rmb[2]==0)
			cout<<swap(rmb[4])<<"佰元";
		else
			cout<<swap(rmb[4])<<"佰";
		if(rmb[3]!=0&&rmb[2]!=0) 
			cout<<swap(rmb[3])<<"拾";//230 
		else if(rmb[3]!=0)
			cout<<swap(rmb[3])<<"拾元";
		if(rmb[3]!=0&&rmb[2]!=0) //个 ******************************
			cout<<swap(rmb[2])<<"元";//十位不为零 
		else if(rmb[2]!=0)
			cout<<"零"<<swap(rmb[2])<<"元";//十位为零 
		if(rmb[1]!=0) 
			cout<<swap(rmb[1])<<"角";
		if(rmb[0]!=0) 
			cout<<swap(rmb[0])<<"分"; 
	 } 
	 if(flag==4)//3:几十元
	{
		cout<<"人民币:";
		if(rmb[2]==0)
			cout<<swap(rmb[3])<<"拾元";
		else
			cout<<swap(rmb[4])<<"拾";
		if(rmb[2]!=0) 
			cout<<swap(rmb[2])<<"元";
		if(rmb[1]!=0) 
			cout<<swap(rmb[1])<<"角";
		if(rmb[0]!=0) 
			cout<<swap(rmb[0])<<"分"; 
	 } 
	 if(flag==3)//4:几元
	{
		cout<<"人民币:"<<swap(rmb[2])<<"元";
		if(rmb[1]!=0) 
			cout<<swap(rmb[1])<<"角";
		if(rmb[0]!=0) 
			cout<<swap(rmb[0])<<"分"; 
	 }
	 if(flag==2)//5:几角 
	{
		cout<<"人民币:"<<swap(rmb[1])<<"角";
		if(rmb[0]!=0) 
			cout<<swap(rmb[0])<<"分"; 
	 } 
	 if(flag==1)//6:几分 
	{
		cout<<"人民币:"<<swap(rmb[0])<<"分";
	 } 
	cout<<"\n****************************************************************************"<<endl;
} 
char *swap(int n)//为输出繁体做准备,先确定好数字写法; 
{
	if(n==0)
	{
		strcpy(a,"零");
		return a;
	}
	if(n==1)
	{
		strcpy(a,"壹");
		return a;
	}
	if(n==2)
	{
		strcpy(a,"贰");
		return a;
	}
	if(n==3)
	{
		strcpy(a,"叁");
		return a;
	}
	if(n==4)
	{
		strcpy(a,"肆");
		return a;
	}
	if(n==5)
	{
		strcpy(a,"伍");
		return a;
	}
	if(n==6)
	{
		strcpy(a,"陆");
		return a;
	}
	if(n==7)
	{
		strcpy(a,"柒");
		return a;
	}
	if(n==8)
	{
		strcpy(a,"捌");
		return a;
	}
	if(n==9)
	{
		strcpy(a,"玖");
		return a;
	}
} 
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值