//********************************************************************************************
//*程序作者:冰糖
//*完成日期: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;
}
}
C++ 第一章 NO.11 编写一个程序模拟支票输出。程序要求用户输入日期,姓名和支票的数量,然后模拟支票的形式输出以下信息,
最新推荐文章于 2022-06-22 07:37:27 发布