整了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分)相关推荐

  1. 7-168 币值转换 (20 分)

    7-168 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为 ...

  2. 7-83 币值转换 (20 分)

    7-83 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...

  3. 7-23 币值转换 (20分)

    7-23 币值转换 (20分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简 ...

  4. 【Java】7-23 币值转换 (20 分)

    7-23 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了 ...

  5. 7-43 币值转换 (20分)_「篮球看吧」40岁了!生涯25年!还狂砍33分+联赛得分王,这他么是人吗...

    35岁的詹姆斯仍处在巅峰,让无数人惊讶.40岁的时候詹皇会是什么样子?现在詹皇有了一个参照样本,那就是40岁的斯科拉.这位阿根廷球星在迈入四旬依然能称霸欧洲顶级联赛,目前在意大利甲级篮球联赛得分榜排名 ...

  6. java币值转换_-PAT-java-5-23 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

  7. PTA 7-43 币值转换 (20 分)

    题目 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a- ...

  8. 7-4 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

  9. 币值转换 (20分)

    输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成"贰万叁仟壹百零捌"元.为了简化输出,用小写英文字母a-j顺序 ...

最新文章

  1. 距离传感器控制灯泡代码_如何使用颜色传感器和超声波传感器检测障碍物和避障...
  2. SCCM2007 R2部署Windows7,SCCM系列之八
  3. idea2020搜索不到插件的问题
  4. 联合国再请马云出任要职
  5. C语言第五次博客作业---函数
  6. python 模拟登录验证码_Python模拟登陆 —— 征服验证码 3 CSDN
  7. 【转】UNICODE编程资料
  8. ylbtech-Unitity-CS:AnonymousDelegates
  9. mysql数据库远程安装,Linux_15:解决远程安装数据库
  10. 全球及中国硬盘用基板行业发展前景预测与投资战略规划研究报告2022-2028年
  11. HTML5 Audio时代的MIDI音乐文件播放 .
  12. 威斯敏斯特教堂(西敏寺)墓碑上的话(WestMinster Abbey,When I was young and free...,修身齐家治国平天下)...
  13. 富文本框wangEditor
  14. ​WPF CompositionTarget.Rendering和 DispatcherTimer​
  15. 高级语言程序设计(C语言)----第三章(上) 数据类型、运算符和表达式
  16. 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
  17. Matlab实现滤波器,进行ASK、FSK、多音信号的滤波
  18. PHP最好的语言的梗的笑话
  19. python爬取携程旅游评价信息词云图分析
  20. 千人规模互联网公司研发效能成功之路

热门文章

  1. 已经安装了PCV但pycharm还是报错:no model named PCV
  2. NodeJs+Egret制作socket在线五子棋游戏(1)
  3. Fifth season ninth episode,do not touch my Sandwich!!!hahaha
  4. html比赛小作品源码,我的网页设计大赛参赛作品
  5. 全球及中国手机电池市场销售前景态势及产销需求预测报告2021-2027年版
  6. IEC60086–4:2019原电池第4部分:锂电池的安全性检测
  7. uniapp使用字体包,更换个性化字体
  8. 【PMP考试秘笈】第二式:PMP 考试工具技术常见翻译问题
  9. DFS理解(java)
  10. FANUC机器人EIP协议焊机配置