|

楼主 |
发表于 2005-1-15 09:52:10
|
显示全部楼层
新手写代码(改过),还希望大虾再看下
还是上次的将 阿拉伯数字转化成大写中文的代码!
经过上次各位大虾的教悔,
修改了一下,再给大虾看看.
#include <stdio.h>
main()
{
double x,y;
char *ch[]={"1","2","3","4","5","6","7","8","9"};
char *ch1[]={"w","q","b","s"};
char num[2][4];
char snum[3];
long i,n,j,t,o,y1;
printf("input:");
scanf("%f",&x);
n=(long)x;
y=x-n;
//将整数部分放进数组
for(i=0;i!=3;i++) //这里是将过位数的一个数字,分被方放进数组中:例如12345678
{for(o=0;o!=4;o++) //存放的格式就是
{ //num[0][]={9,8,7,6} num[1][]={5,4,3,2} num[2][]={1,0,0,0}
num[o]=(char)(n%10); //我这样作的目的是为了通过num[] i 就可以判断是输出 元
n/=10; //万 亿 同样也可以同过num[][o] o来判断十 百 千
}
}
//将小数部分放进数组
y=y*100+0.5;
y1=(long)y;
for(i=0;y1!=0;i++)
{snum=(char)(y1%10);
y1=y1/10;}
//判断数组中的数 输出响影的 中文
for(i=2;i>=0;i--){
for(o=3;o>=0;o--){
if((int)num[o]>1 && (int)num[o]<9) //如果num[][] 是1-9之间就在这处理
{printf("%s",ch[(int)num[o]]);
printf("%s",ch1[o-1]); //输出1-9的中文
}
else if(num[o-1]==0); //如果是num[][o]是0 就判断num[][o-1]是否是0 不是就
else printf("0"); //输出0的中文 是就跳过
if(i==0) printf("yi"); //判断输出 元 万 亿
else if(i==1) printf("wan");
else if(i==2) printf("yuan");
}
if(snum[0]+snum[1]>0)
{
if(snum[0]>0) printf("%sjiao",ch[(int)snum[0]]);
else printf("0");
if(snum[1]>0) printf("%sfen",ch[(int)snum[0]]);
}
} |
|