062.浮点数转换为字符串

举报
C语言与CPP编程 发表于 2022/04/30 22:55:55 2022/04/30
1.4k+ 0 0
【摘要】 #include <stdio.h>#include <string.h> char c_je[51]; /*大写金额字符变量*/ char* zh( x ) /*数字金额转换为大写金额子程序*/double x; /*要...

      #include <stdio.h>
      #include <string.h>
      char c_je[51];  /*大写金额字符变量*/
      char* zh( x ) /*数字金额转换为大写金额子程序*/
      double x;                          /*要转换的金额数*/
      {
     	int i, n, bz;
     	char je[14];        /*数字金额的字符变量*/
     	char temp[13];
     	char f1[10][3] = {"零","壹","贰","叁","肆","伍",
     	                  "陆","柒","捌","玖"}; /*数字对应的大写数组变量*/
     	char f2[11][3] = {"亿","仟","佰","拾","万",
     	                  "仟","佰","拾","元","角","分"}; /*每位数字对应单位数组变量*/
     	sprintf( je, "%.01f", 100*x); /*转换成字符*/
      	n = strlen( je );
      	c_je[0] = '\0';
      	bz  = 1;
     	for( i = 0; i < n; i++ )
      	{
     		strcpy( temp, &je[i] );  /*复制到临时数组*/
     		if( atoi(temp)==0)    /*判断第i位后是否全为0*/
      		{
      			bz = 2;
     			break;
      		}
     		if( je[i] != '0' )
      		{
     			if( bz == 0 )
     				strcat( c_je, f1[0] );
     			strcat( c_je, f1[je[i] - '0'] ); /*数字串转化字符串*/
      			bz = 1;
     			strcat( c_je, f2[13-n+i]);
      		}
     		else
      		{
     			if( n-i == 7 && (je[i-1]!='0'||je[i-2]!='0' || je[i-3]!='0')) /*判断万位位置*/
     				strcat( c_je, "万" );
     			if( n-i == 3 ) /*判断个位数的元位置*/
     				strcat( c_je, "元");
      			bz = 0;
      		}
      	}
     	if( bz == 2 )
      	{
     		if( n-i >= 7 && n-i < 10 )
     			strcat( c_je, "万") ; /*万位数字为0,加‘万’*/
     		if( n-i >= 3 )
     			strcat( c_je, "元");
     		strcat( c_je, "正" ); /*最后不是分位,加“正”*/
      	}
     	return c_je; /*返回大写金额*/
      }
      main()
      {
     	double count;
     	//clrscr();
     	printf("*********************************************************\n");
     	printf("* *\n");
     	printf("* 数字金额转换为大写金额程序 Ver.1.0 *\n");
     	printf("* *\n");
     	printf("* By RZLIN *\n");
     	printf("* *\n");
     	printf("* 请输入要转换的金额: *\n");
     	printf("* ");
     	scanf("%lf", &count );
     	printf("* 您输入的金额为:%10.2lf 。 *\n",count);
     	printf("* *\n");
     	printf("*转换为大写金额是:%s\n", zh( count ) );
     	printf("* *\n");
     	puts("* 请按任意键退出... *");
     	printf("*********************************************************\n");
     	getch();
      }
  
 

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124495567

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。