- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
???????? 问题提出:
建立一个函数,对一个数字转换成相应的人民币方式。
人民币按元为读写转换单位。
条件:参照中国人的读写习惯、采用中文大写。
???????? 系统分析:
人民币转换函数的制作,首先应确定一个函数基本要素,即函数名、参数、返回值及其数据类型。
我们定义函数名:MoneyTrans,参数为人民币的阿拉伯表示,为了方便数据处理,我们定义其数据类型为字符串,返回值为人民币的大写表示,亦为字符串数据类型。
Char * MoneyTrans(char mstr[]);
通常情况下,按人民币读写习惯,对于整数部分是四位数字为一读写单位,分别有万、亿、万亿等。
对于连续的四位数字,其读写单位分别为千、百、拾等,最后一位数字无读写单位。
对于小数位,则有角、分等。
对于每一个阿拉伯数字,在中文上分别对应于:零、壹、贰、叁、肆、伍、陆、柒、捌、玖等。
通过上述分析,在编制函数时,我们可以按照读写习惯,依次对数据有高位到低位进行处理。
特殊情况:
对于四位数字中间连续有几个0的数字,通常只读一个零。
没有小数位的,要在后面添加一个整。
???????? 代码设计:
#include stdio.h
#include string.h
#include conio.h
?
/*定义人民币转换所需字符串*/
char str1[]=零,壹,贰,叁,肆,伍,陆,柒,捌,玖;
char str2[]=千,百,拾;
char str2[]=万,亿,万亿;
char str2[]=角,分;
?
?
?
#define MaxCharsStr 250 /* 字符数组所装入的最多字符数 */
#define MaxLineCharsScreen 80 /* 屏幕一行显示的最大字符数 */
/* 该函数将字符串str显示在row行的中间*/
void PrintStrCenter(int row,char *str)
{
int col;
col=( MaxLineCharsScreen - strlen(str)) /2 ;
if (col=0)
col=1;
gotoxy(col,row);
cprintf(%s,str);
}
/* 该函数将字符串str显示在row行的中间*/
void InitLineStr (int lineid,char *linestr)
{
char linestr1[MaxCharsStr];
char linestr2[MaxCharsStr];
char linestr3[MaxCharsStr];
int strval;
int linelen;
int tmpidx1;
int tmpidx2;
?strcpy(linestr1, 1\t);
if (lineid1)
{
linelen=strlen(linestr);
strval=0;
tmpidx2=0 ;
for (tmpidx1=0;tmpidx1linelen;tmpidx1++)
{
if (linestr[tmpidx1]!= \t)
linestr2[tmpidx2++]= linestr[tmpidx1];
else
{
linestr2[tmpidx2++]=\0;
tmpidx2=0;
if (strval!=0)
{
sprintf(linestr3, %d,strval+atoi(linestr2));
strcat(linestr1,linestr3);
strcat(linestr1, \t);
}
strval=atoi(linestr2);
}
}
strcat(linestr1, 1\t);
}
strcpy(str,str1);
}
?
/* 主函数 */
void main(void)
{
char linestr[MaxCharsStr];
int num;/*保存打印三角形的阶数*/
int idx;
clrscr();
printf(Please input n[1,10]: );
scanf(%d,num);
if (num0 num =10)
{
sprintf(linestr, The Table of %d. ,num);
PrintStrCenter(5,linestr);
for (idx=1;idx=num;idx++)
{
InitLineStr(idx, linestr);
PrintStrCenter(8+idx, lines
文档评论(0)