7-83 币值转换 (20分)
整了3个小时终于做出来了(我是菜鸡,大佬们别喷),初始的时候解题方向整错了:我把单位和数字放在一起输出了,导致以我现在能力无法正确表达出汉字的习惯。意识到可能需要重写代码,就看了下网上的答案,大体思路是把符号和数字的输出分开,然后我就接着这个思路继续按我的方式来做题,以下是我的代码,测试点是全通过了,应该没问题吧哈哈:
#include<stdio.h>
#include<math.h>
int main(int argc ,char** argv){unsigned int yuan;scanf("%u",&yuan);int state = 1;int first_num,m = yuan,cnt = 0,continuous_zero = 0;/*如果一开始的输入为0,那么输出0*/if(yuan == 0){printf("a");}/*获取数字位数*/while(m != 0){m /= 10;cnt++;}char uppercase_num;double digit;while(cnt--){/*取得首位数字*/digit = pow(10,cnt); first_num = yuan / digit;uppercase_num = 'a' + first_num; //获得大写数字if(uppercase_num == 'a' && state == 0){ //本次数字是连续零continuous_zero++;}else if(uppercase_num == 'a'){//本次数字是单个零state = 0;}else if(continuous_zero != 0){ //经过前两个分支,这个分支的意思是:本次数字不是零,但是前面有几个连续零printf("a");continuous_zero = 0;state = 1;}else{ //本次数字不是零if(state == 0){ //前面有单个零printf("a");}else;state = 1; //当前数字不是零}yuan %= (int)digit;if(state == 1){ //当前数字不是零,所以输出当前数字的大写形式printf("%c",uppercase_num);}else;if(state == 1){ //当前数字不是零,需要输出符号switch(cnt + 1){case 2: printf("S"); break;case 3: printf("B"); break;case 4: printf("Q"); break;case 5: printf("W"); break;case 6: printf("S"); break;case 7: printf("B"); break;case 8: printf("Q"); break;case 9: printf("Y"); break;default: ; }}else{ //当前数字是零或者连续零switch(cnt + 1){case 5: if(continuous_zero > 2){ //是3个或以上的连续零,所以跳过符号'W';}else{ //2个或以下的零,需要输出符号'W'printf("W"); break;}default: ; }}}return 0;
}
因为是一点一点调试完成的,不是一气呵成的,所以逻辑比较乱,比较难看懂。以上是自己纪念一下自己的答案嘻嘻。
以下是我在网上看到的答案,他用的是for循环,用continue解决的多零问题,感觉很棒,可惜我当时已经写了一半的代码,就没用这个方法,这是for循环答案的链接:7-23 币值转换 (20 分)
7-83 币值转换 (20分)相关推荐
- 7-168 币值转换 (20 分)
7-168 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为 ...
- 7-83 币值转换 (20 分)
7-83 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...
- 7-23 币值转换 (20分)
7-23 币值转换 (20分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简 ...
- 【Java】7-23 币值转换 (20 分)
7-23 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...
- 7-43 币值转换 (20分)_「篮球看吧」40岁了!生涯25年!还狂砍33分+联赛得分王,这他么是人吗...
35岁的詹姆斯仍处在巅峰,让无数人惊讶.40岁的时候詹皇会是什么样子?现在詹皇有了一个参照样本,那就是40岁的斯科拉.这位阿根廷球星在迈入四旬依然能称霸欧洲顶级联赛,目前在意大利甲级篮球联赛得分榜排名 ...
- java币值转换_-PAT-java-5-23 币值转换 (20分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...
- PTA 7-43 币值转换 (20 分)
题目 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a- ...
- 7-4 币值转换 (20分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...
- 币值转换 (20分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...
最新文章
- 距离传感器控制灯泡代码_如何使用颜色传感器和超声波传感器检测障碍物和避障...
- SCCM2007 R2部署Windows7,SCCM系列之八
- idea2020搜索不到插件的问题
- 联合国再请马云出任要职
- C语言第五次博客作业---函数
- python 模拟登录验证码_Python模拟登陆 —— 征服验证码 3 CSDN
- 【转】UNICODE编程资料
- ylbtech-Unitity-CS:AnonymousDelegates
- mysql数据库远程安装,Linux_15:解决远程安装数据库
- 全球及中国硬盘用基板行业发展前景预测与投资战略规划研究报告2022-2028年
- HTML5 Audio时代的MIDI音乐文件播放 .
- 威斯敏斯特教堂(西敏寺)墓碑上的话(WestMinster Abbey,When I was young and free...,修身齐家治国平天下)...
- 富文本框wangEditor
- ​WPF CompositionTarget.Rendering和 DispatcherTimer​
- 高级语言程序设计(C语言)----第三章(上) 数据类型、运算符和表达式
- 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
- Matlab实现滤波器,进行ASK、FSK、多音信号的滤波
- PHP最好的语言的梗的笑话
- python爬取携程旅游评价信息词云图分析
- 千人规模互联网公司研发效能成功之路
热门文章
- 已经安装了PCV但pycharm还是报错:no model named PCV
- NodeJs+Egret制作socket在线五子棋游戏(1)
- Fifth season ninth episode,do not touch my Sandwich!!!hahaha
- html比赛小作品源码,我的网页设计大赛参赛作品
- 全球及中国手机电池市场销售前景态势及产销需求预测报告2021-2027年版
- IEC60086–4:2019原电池第4部分:锂电池的安全性检测
- uniapp使用字体包,更换个性化字体
- 【PMP考试秘笈】第二式:PMP 考试工具技术常见翻译问题
- DFS理解(java)
- FANUC机器人EIP协议焊机配置