将数字字符串转换为美元形式

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。将数字字符串转换为美元形式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

将数字字符串转换为美元形式

要求:
编写程序将一个数字字符串(代表以美分为单位的金额)转换为美元形式,如:
在这里插入图片描述
函数原型为:
void dollar( char *dest,char const *src );
src指向需要被格式化的字符,格式化的结果保存在dest中。要求所创建的字符串以一个NUL字节结尾。src的值不能被修改。

思路:
由于当字符串长度小于3个字符时会出现需增添’0’的情况,应做特殊讨论,所以应将小数点前和小数点后的转换分开进行,当小数点前的部分操作完毕,下一个操作便是插入小数点,以及对小数部分进行转换。
对于字符串长度小于3个字符时的情况,它们的共性是在$后的小数点前部分,都为’0’,对于小数部分,当字符数为2时,不需增添’0’,字符数为1时,需增添一个’0’,字符串为0时,需增添两个’0’,考虑使用条件操作符以包含所有上述情况。
对于字符数大于等于3的字符串,其转换过程是一个依次复制的过程,不过需要在特定位置插入逗号,设i为去除两个小数部分字符后的字符数,使用其控制循环,当i减为0时,证明小数点前的部分已复制完毕。研究src去除最后两个字符后的字符串,若将最后一个字符编号为1,倒数第二个字符编号为2,以此类推……,那么从最后往前看,每出现3个字符便需加逗号,即当i%3==0时为加逗号的条件之一,因此在复制编号为此i值的字符之前便需进行插入逗号的操作。
代码:

#include <stdio.h>
void dollars( register char *dst,register char const *src )
{
	int len;
	if( dst==NULL||src==NULL )
		return;
	*dst++ ='$';
	len=strlen( src );
	/*若数字字符串足够长,复制将出现在小数点左边的数字,在适当的位置
	**加逗号。若字符串短于3个数字,在小数点前面再添加一个'0'
	*/
	if( len>=3 )
	{
		int i;
		for( i=len-2;i>0; )
		{
			*dst++ = *src++;
			if( --i>0 && i%3==0 )
				*dst++ = ',';
		}
	}
	else
		*dst++='0';
	/*存储小数字,然后存储'src'中剩余的数字。若'src'中的数字少于2个
	**数字,用'0'填充,然后在'dst'中添加NUL终止符
	*/
	*dst++ = '.';
	*dst++ = len < 2 ? '0' : *src++;
	*dst++ = len < 1 ? '0' : *src;
	dst=0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153883.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!