当前位置: 代码迷 >> C语言 >> 关于1234.56转话为1千2百3十4元5角6分的问题 望指点
  详细解决方案

关于1234.56转话为1千2百3十4元5角6分的问题 望指点

热度:293   发布时间:2007-02-11 20:51:49.0
关于1234.56转话为1千2百3十4元5角6分的问题 望指点

已经会写1234的输出了
但是怎么把.56跟1234分开 然后输出角和分 请高手指点

[此贴子已经被作者于2007-2-11 20:55:55编辑过]


----------------解决方案--------------------------------------------------------

你的意思是输入一个数, 然后输出RMB形式?


----------------解决方案--------------------------------------------------------

就关键问题我来举个例子,
double x=0.45678;
x乘以10后转换成int类型,然后求余,得到4,
x乘以100后转换成int类型,然后求余,得到5,
x乘以1000后转换成int类型,然后求余,得到6,
以此类推,赫赫~~~


----------------解决方案--------------------------------------------------------
不好意思,刚才写掉了几个字。。


就关键问题我来举个例子,
double x=0.45678;
x乘以10后转换成int类型,然后对10求余,得到4,
x乘以100后转换成int类型,然后对10求余,得到5,
x乘以1000后转换成int类型,然后对10求余,得到6,
以此类推,赫赫~~~
----------------解决方案--------------------------------------------------------

#include "stdio.h"
#include "string.h"

int STRPT(char *); //返回小数点前字符的个数

int main(void){

char RMB[15],*RMB_PT;

short int index;

fgets(RMB,14,stdin); //只允许输入14位字符.

*(RMB+(strlen(RMB)-1))='\0'; //把最后一位换行符('\n)替换成空字符.

index=STRPT(RMB);

for(RMB_PT=RMB;*(RMB_PT)!='\0'&&index!=-3;(RMB_PT)++,index--){

if(*(RMB_PT)!='.'){

printf("%c",*(RMB_PT));

switch(index){

case 9:printf("亿");break;

case 5:printf("万");break;

case 4:printf("千");break;

case 3:printf("百");break;

case 2:printf("拾");break;

case 1:printf("元");break;

case -1:printf("角");break;

case -2:printf("分");break;
}

}

else

continue ;

}

putchar('\n');

return 0;

}

int STRPT(char *str){

int ct=0;

while(*str!='.'&&*str!='\0'){

ct++;

str++;

}

return ct;

}


----------------解决方案--------------------------------------------------------
在VC6下可以运行 在win-tc下竟然不能显示汉字 并且加了getch()了 还一闪而过 郁闷

----------------解决方案--------------------------------------------------------
3楼好意心领了 我的意思你理解错了 呵呵  
----------------解决方案--------------------------------------------------------