小写数字转换成大写数字
view source
print?
01 #include<stdio.h>
02 void main()
03 {
04 double x,y;
05 char *ch[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
06 char *ch1[]={"拾","佰","仟","万","拾","佰","仟","亿"};
07 char num[256];
08 long i,n,j,m,y1;
09 printf("input:");
10 scanf("%lf",&x);
11 n=(long)x;/*得整数部分*/
12 y=x-n;/*得小数部分*/
13 for(i=0;n!=0;i++)
14 {
15 num[i]=(char)(n%10);
16 n/=10;
17 }
18 m=i;
19 num[i]='.';
20 for(y=y*10;(long)((y-(long)y)*10);) /*如果小数位还是有数(非0)循环继续*/
21 y*=10;/*小数转化为整数如0.11111转为11111.00...*/
22 y1=(long)y;
23 for(i=m+1;y1!=0;i++)
24 {num[i]=(char)(y1%10);
25 y1=y1/10;}/*取各位上的数字*/
26 for(n=0;;n++)
27 {
28 if(num[n]=='.')
29 {
30 for(j=n-1;j>=0;j--)/*判断是否是万位,亿位..如是再判断是否是0如是就不输出零.*/
31 {
32 if(m<=5)
33 if(m==5&&(int)num[j]==0)
34 ;
35 else
36 printf("%s",ch[(int)num[j]]);/*输出大写壹..*/
37 else
38 if(m%4==0&&(int)num[j]==0)
39 ;
40 else
41 printf("%s",ch[(int)num[j]]);
42 if(m>=2)
43 {printf("%s",ch1[m-2]);/*输出拾佰仟..如有2位就输出拾*/
44 m=m--;}
45 }
46 printf("点");
47 break;
48 }
49 }
50 for(i=i-1;num[i]!='.';i--)
51 printf("%s",ch[(int)num[i]]);/*输出小数部分*/
52 }