程序是用Codeblocks写的,具体如图。请指教!
附上程序源码
#include
#include
#include
using namespace std;
string getNum(){
string s;
cout<<"请输入一个大于0且不大于15位的有效数字,保留两位小数:"<
cin>>s;
cin.clear();
return s;
}
bool checkNum(string s){
int n=s.length();
double m=atof(s.c_str());
if(n0)
return true;
else
return false;
}
string chinese(int flag,string s){
int slength=s.length();
string letter[]={"零""壹""贰""叁""肆""伍""陆""柒""捌""玖"};
string unit[]={"元""拾""佰""仟""万""拾""佰""仟""亿""拾""佰""仟""万"};
string small[]={"角""分"};
string sc="";
int i=0;
for(i;i<slength;i++){
if(flag==1)
sc=sc+letter[s.at(i)-48]+unit[slength-i-1];
else sc=sc+letter[s.at(i)-48]+small[slength-i-1];
}
return sc;
}
string turnNum(string s){
double m=atof(s.c_str());
int dec,sign;
s=fcvt(m,2,&dec,&sign);
string onlyint=s.substr(0,s.size()-2);
string onlysmall=s.substr(s.size()-2,s.size());
string partint=chinese(1,onlyint);
string partsmall=chinese(2,onlysmall);
s=partint+partsmall;
return s;
}
int main()
{
cout << "\n*****将数字转换成中文金额大写*****\n" << endl;
while(1){
string s=getNum();
if(checkNum(s)){
s=turnNum(s);
cout<<"转换为中文后为:"<<s<<endl;
break;}
else
cout<<"输入错误!请重新输入"<<endl;
}
}