#include <iostream>
#include <math.h>
using namespace std;
void danwei(double i);// 输出元以上的单位
void danwei2(double i);// 输出角和分单位
void upcaseNumber(int i);// 输出大写金额
void main()
{
int n =0;
cout<<"请输入转换次数"<<endl;
cin>>n;
while(n>=1)
{
double x,i=10000000;
int j=0;//记录错误次数
cout<<"请输入转换金额"<<endl;
cin>>x;
if(x<=0){// 小于零
cout<<"零元整"<<endl;
}
while(x>100000000){// 大于一亿,错误次数统计
if(j>2){
cout<<"错误输入已经3次,无权再输入"<<endl;
return;//后面都不用执行了,所以不用break
}
cout<<"您输入的金额错误,金额不超过一亿,请重新输入"<<endl;
cout<<"请输入金额,不超过一亿"<<endl;
cin>>x;
j++;
}
x=floor(x*100+0.5)/100;// 四舍五入
int m=0;
// 处理元以上
while(i>=1)//不知道数字位数,不能用for,没有判定条件,所以用while
{
m = (int)floor(x/i);// 比如x=888,i=100 ,则m=8,
if(m!=0)
{
upcaseNumber(m);
danwei(i);
x = x-m*i;
}
i=i/10;
}
// 处理角和分
if(x!=0)// x存在角分的情况下
{
x=x*100;
i=10;
while(i>=1)
{
m = (unsigned int)floor((x+0.5)/i);// 比如x=888,i=100 ,则m=8,
if(m!=0)
{
upcaseNumber(m);
danwei2(i);
x = x-m*i;
}
i=i/10;
}
}
cout<<"整";
n--;
}
}
void danwei(double i)
{
if(i==10000000||i==1000)
{
cout<<"仟";
}
if(i==1000000||i==100)
{
cout<<"佰";
}
if(i==100000||i==10)
{
cout<<"十";
}
if(i==10000)
{
cout<<"万";
}
if(i==1)
{
cout<<"元";
}
}
void danwei2(double i)
{
if(i==10)
{
cout<<"角";
}
if(i==1)
{
cout<<"分";
}
}
void upcaseNumber(int i)//输出大写数字
{
switch(i)
{
case 0:
cout<<"零";
break;
case 1:
cout<<"壹";
break;
case 2:
cout<<"贰";
break;
case 3:
cout<<"叁";
break;
case 4:
cout<<"肆";
break;
case 5:
cout<<"伍";
break;
case 6:
cout<<"陆";
break;
case 7:
cout<<"柒";
break;
case 8:
cout<<"捌";
break;
case 9:
cout<<"玖";
break;
}
}
本文介绍了一个使用C++实现的金额大写转换程序,能够将输入的金额数值转换为标准的大写金额形式,并具备基本的输入验证功能。
4279

被折叠的 条评论
为什么被折叠?



