C语言-求输入数字输出对应的汉字要求0-100,精确到两位小数点

例如输入1.05输出一点零五

#include <stdio.h>
#include <stdlib.h>
void cword(int num);
int main(void)
{
float num;
scanf("%f", &num);

/* 整数部分 */
if ((int)num / 100 > 0) // 百位
{

cword((int)num / 100);
printf("百");
}
if ((int)num % 100 / 10 > 0) // 十位有三种可能 十位和个位都是零
{ // 如100 不能叫 一百零十 而是叫一百
cword((int)num % 100 / 10); //109不能叫一百零十九 而是叫一百零九
// 正常如110 叫一百一十
printf("十");
}
else if ((int)num % 10)
printf("零");

if ((int)num % 10) // 各位很简单 只要不是零 直接用函数转就行
cword((int)num % 10);

/* 小数部分 */

num *= 100; // 让操作数乘以一百变成整数以便取数

if ((int)num % 100 != 0)
{
printf("点");
cword((int)num % 100 / 10);

if((int)num % 10 != 0)
cword((int)num % 10 );
}

system("pause>nul");
return 0;
}
void cword(int num)
{
switch(num)
{
case 0 : printf("零"); break;
case 1 : printf("一"); break;
case 2 : printf("二"); break;
case 3 : printf("三"); break;
case 4 : printf("四"); break;
case 5 : printf("五"); break;
case 6 : printf("六"); break;
case 7 : printf("七"); break;
case 8 : printf("八"); break;
case 9 : printf("九"); break;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-02
我只能说我的思路是
将输入内容一位一位的截取过来
然后进行switch判断
例如case1:str +="一" ;
第2个回答  2013-10-02
printf("%2f")吧 我记得是这样 f前面数字多少就是小数点后几位
相似回答