|

楼主 |
发表于 2005-1-17 08:13:11
|
显示全部楼层
我没有给他们分配空间,就怎么直接的用的在RH下可以成功的运行
我判断0的方法是,看下一个数是不是0
如果是0就不输出,不是就输出
其他的都很好,就是在输出元的的地方老是多出一个零出来
如90 就输出 九十零元
但是如果是91 他就输出九十一元 不知道是是那出了错~~~`
- #include <stdio.h>
- main()
- {
- double x,y,p;
- char *ch[]={"零","1","2","3","4","5","6","7","8","9"};
- char *ch1[]={"十","百","千","万","十","百","千","亿"};
- char num[256];
- char snum[3];
- long i,n,j,m,t,k;
- printf("input:");
- scanf("%lf",&x); //我把书翻烂了,在昨天晚上开知道要加个L
- p=x;
- n=(long)x;
- y=x-n;
- y=y*100+0.6;
- t=(long)y;
- for(i=0;n!=0;i++)
- {
- num[i]=(char)(n%10);
- n/=10;
- }
- m=i;
- k=i;
- num[i]='.';
- for(i=0;t!=0;i++)
- {
- snum[i]=(char)(t%10);
- t/=10;
- }
- for(n=0;;n++)
- {
- if(num[n]=='.')
- {
- for(j=n-1;j>=0;j--)
- {
-
- if(m<=5)
- if((int)num[j]==0 && (int)num[j-1]==0); //m==5 ||
- else
- {
- printf("%s",ch[(int)num[j]]);
- if((int)num[j]==0);
- else
- {
- if(m>=2)
- printf("%s",ch1[m-2]);
-
- }
- }
- else
- if((int)num[j]==0&&(int)num[j-1]==0); //m%4==0||
- else
- {printf("%s",ch[(int)num[j]]);
- if((int)num[j]==0);
- else
- {
- if(m>=2) printf("%s",ch1[m-2]);
-
- }
- }
- if(j==5) {
- if((int)num[5]+(int)num[6]+(int)num[7]>0){
- if((int)num[4]==0) printf("万");
- }
-
-
-
- }
-
- m=m--;
- }
-
- printf("元");
- break;
- }
- }
-
- if((int)snum[0]+(int)snum[1]>0)
- {
- if((int)snum[1]>=1)
- {printf("%s",ch[(int)snum[1]]);
- printf("角");}
- else printf("零");
- if((int)snum[0]>=1)
- {printf("%s",ch[(int)snum[0]]);
- printf("分");}
- }
- }
复制代码 |
|