- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于货币转换的讨论.doc
2011-09-21 货币转换
首先是人民币兑换成日元,老师给出的代码大致如下:
(代码1)
#includestdio.h
void main(){
double r;
double cn;
double jp;
printf(人民币兑换日元的汇率:);
scanf(%lf,r);
printf(需要兑换的人民币数:);
scanf(%lf,cn);
jp = cn * r;
printf(能兑换%f的日元\n,jp);
}
以及课堂上老师要求的日元兑换人民币的代码:
(代码2)
#includestdio.h
void main(){
double r;
double cn;
double jp;
printf(日元兑换人民币的汇率:);
scanf(%lf,r);
printf(需要兑换的日元数:);
scanf(%lf,jp);
cn = jp * r;
printf(能兑换%f的人民币\n,cn);
}
然而随即老师给出了这样一个思考题,编写一个程序代码,能够实现人民币与日元的自由转换,也就是说单向的兑换升级为双向的。
很容易的就会想到将两个代码合二为一来实现这个功能,当需要人民币换日元时就调用代码1,需要日元换人民币时就调用代码2。理所当然了就会萌生使用IF语句的想法,随即产生的问题便是运用什么作为判断条件。
由于这个程序仅仅完成人民币与日元的转换,所以说可以在汇率上下文章,也就是说人民币兑换日元的汇率,是1的,而日元兑换人民币的汇率是1的(以上均以每元and每日元作为汇率单位)。在这样的想法下,当汇率1,则我们调用人民币兑换日元的代码1,相反的话,则调用日元转人民币的代码2。
运用以上的思路,大概可以得出这么一个代码:
#includestdio.h
void main(){
double cn;
double jp;
double r;
printf(货币兑换的汇率:);
scanf(%lf,r);
if (r1){
printf(需要兑换的人民币数:);
scanf(%lf,cn);
jp = cn * r;
printf(能兑换%f的日元\n,jp);
}else if (r1){
printf(需要兑换的日元数:);
scanf(%lf,jp);
cn = jp * r;
printf(能兑换%f的人民币\n,cn);
}
}
这样的一个代码由两个代码拼凑而成已经能够进行货币的双向转换了。但是通过观察不难看出,r1与r1的代码除了中文以及变量的替换,其他部分基本都是类似。应该采取什么样的一种办法去优化这些繁琐的部分。
针对两段代码的不同点有以下两个部分可以进行优化:
中文的部分因为是自由输入,所以稍微做点文字游戏就可以了。
至于jp,cn,r三个变量,虽然是代表日元,人民币,汇率,但是变量是人定的,限定其含义的不同会导致思路上的不同,代码1中jp = cn * r,以及代码2中 cn = jp * r,看起来是两个不同的意思,一个是人民币换日元,一个是日元换人民币的运算,但是本质上就是 所兑换的货币类型 = 现需要的货币类型 × 相应汇率 的运算。
运用这样的思路,便可以将两段繁杂的代码整合和简化以及错误数据完善,可以得出如下代码:
#includestdio.h
void main(){
double m; // m为需要兑换的货币数。
double n; // n 为兑换所得的货币数。
double r; // r 为相对应的汇率。
printf(货币兑换的汇率:);
scanf(%lf,r);
printf(需要兑换的货币数:);
scanf(%lf,m);
n = m * r;
if (r=0){
printf(汇率输入有误。\n);
}else if (r1){
printf(能兑换%f的日元\n,n);
}else if (r1){
printf(能兑换%f的人民币\n,n);
}
}
以下是执行的输出情况:
通过优化后已经能够自动识别兑换的方式,自由的进行人民币与日元双向的转换。
另外一种,也是我所采用的,虽然以上代码已经能够完全实现,但是在运行时不能够让人更清楚的明白以及选择所需要兑换的方式,所以个人编写的代码如下:
#includestdio.h
void main(){
int i;
double m,n,r;
printf(选择货币兑换模式(1、人民币-日元;2、日元-人民币):);
scanf(%d,i);
if (i==1 || i==2){
printf(
文档评论(0)