7-137 出售金项链(误差修正版) (10分)
请编写程序,输入黄金的价格和项链的重量,计算总金额,并打印票据。
注:总金额单位最大只到亿(不到10亿)。
输入格式
金价和重量(均为正实数)
输出格式
参看输出样例。
注:单价、重量和金额,均要求输出2位小数(自动四舍五入),金额还要求输出大写。
大写数字和金额单位所使用的汉字分别为:
数字0 ~ 9的大写依次为: 零、壹、贰、叁、肆、伍、陆、柒、捌、玖。
金额单位由小大到依次为: 分、角、元、拾、佰、仟、万、拾、佰、仟、亿。
输入样例
351.65 14.5
输出样例
单价: 351.65元/克
重量: 14.50克`
金额: 5098.93元
大写: 伍仟零佰玖拾捌元玖角叁分
#include<bits/stdc++.h>
using namespace std;
char d1[50][5]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};//二维
char d2[50][5]={"分","角","元","拾","佰","仟","万","拾","佰","仟","亿"};
int main(){
double a,b,c;
cin>>a>>b;
char s[20]={};
c=1.0*a*b+0.00001;
printf("单价: %.2lf元/克\n",a);
printf("重量: %.2lf克\n",b);
printf("金额: %.2lf元\n",c);
printf("大写: ");
sprintf(s,"%.2lf",c);//单个导入
int total=0;
for(int i=0;;++i){
if(s[i]=='.'){
break;
}
++total;
}
int i;//超时
for( i=0;;++i){
if(s[i]=='.')break;
printf("%s%s",d1[s[i]-'0'],d2[total+1]);
--total;
}
printf("%s角%s分\n",d1[s[i+1]-'0'],d1[s[i+2]-'0']);
return 0;
}