C_and_CPP 板


LINE

程式码: http://codepad.org/XmQgTW3H 想法: 1. 把印「数字」跟印「单位」拆开 2. 把是否补零放在印「数字」处理(用一个 zero flag 协助判断) 3. 把印单位分成二部份: 3.1 十、百、仟: 当前数字不为 0 时,直接输出单位 3.2 万、亿: 用一个 msb flag 协助判断是否输出单位 4. 单独处理只有 0 的 case ※ 引述《a346571358 (风吹谁懂)》之铭言: : 开发平台(Platform): (Ex: Win10, Linux, ...) : win8 : 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) : GCC : 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) : stdio.h : 问题(Question): : 如何显示成 平常国字标准数字念法 : 末几位是0 不显示 : 从最左边起 遇到大於等於一个0 : 只显示一个零 : 喂入的资料(Input): : 42002500 : 预期的正确结果(Expected Output): : 肆仟贰百万贰仟五百元 : 错误结果(Wrong Output): : 肆仟贰百零零贰百五十零元 : 程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档) : https://ideone.com/XnET5L : #include <stdio.h> : void p1(int); : void p2(int); : char *dig[] = {"零","壹","贰","参","肆","伍","陆","柒","捌","玖"}; : char *fer[] = {"\0","十","百","仟","万","十","百","仟","亿"}; : int times=0; : int main() : { : int n; : printf("N = "); : scanf("%d",&n); : p1(n); : printf("元\n"); : return 0; : } : void p1(int n) : { : int prefix,curryDig; : if( n < 10){ : printf("%s",dig[n]); : p2(times); : } : else{ : prefix = n / 10; : times++; : p1(prefix); : times--; : curryDig = n % 10; : if(curryDig == 0){ : int count = 0; : while( prefix % 10 == 0){ : count++; : prefix /= 10; : times--; : curryDig = prefix % 10; : } : if(times != 0) : printf("%s",dig[0]); : } : else{ : printf("%s",dig[curryDig]); : p2(times); : } : } : } : void p2(int times) : { : printf("%s",fer[times]); : } : 补充说明(Supplement): : times当成从後面数来第几个 : -- :



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.82.122.178
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1527911899.A.126.html : 推 jerryh001: 开个阵列把国字结果存起来 然後把不要的部份去掉才输出 06/02 12:22 : → stupid0319: 我执行你的code得到肆仟贰百零零贰百伍十零元 06/02 12:25 : → a346571358: 也就是 我不要直接printf 而是存到新阵列里 去掉再印 06/02 12:26 : → a346571358: 阿 没有万 不好意思打错了 06/02 12:27 : ※ 编辑: a346571358 (111.82.122.178), 06/02/2018 12:27:54 : → stupid0319: 这个用递回来做感觉不太适合 06/02 12:30 : → a346571358: 那有什麽其他想法吗 欢迎告诉我 06/02 12:31 : → stupid0319: logical先列出来,什麽时候要零,什麽时候不要零 06/02 12:33 : → stupid0319: 什麽时候加万,什麽时候加亿,先列出来 06/02 12:34 : → MOONRAKER: 要递回也弄个储存空间吧 这会需要知道之前输出什麽 06/02 12:38 : → stupid0319: 你是Curry粉丝吗?命名要加强一下 06/02 12:38 : → MOONRAKER: 最起码要知道上一次输出什麽 06/02 12:39 : → a346571358: 关於储存空间是用一个变数 存进去吗 06/02 12:40 : → MOONRAKER: 复杂一点的自动机就有储存 但是一般写递回都不会强调 06/02 12:41 : → MOONRAKER: 储存空间比较正式的方法是宣告一个阵列或变数 每次递回 06/02 12:42 : → MOONRAKER: 一直把这个阵列或变数传下去 偷懒可以用全域变数 06/02 12:43 : → a346571358: 毕竟这个程式就是...一直印出 若改成把输出的值都存 06/02 12:43 : → a346571358: 到阵列里面 再用条件去限制这阵列来控制输出值呢 06/02 12:43 : → MOONRAKER: 照我看他有一个地方用到储存 就是上次有没有印出零 06/02 12:46 : → MOONRAKER: 如果上次是零这次还是零就不印出 利用储存会很好克服 06/02 12:47 : → a346571358: 我还是..先问一下怎麽用阵列存国字好了.. 06/02 13:04 : → a346571358: 没事 我现在已经都存在一个阵列了 不过那条件 06/02 13:11 : → longlongint: zerojudge 中文大写数字. 已废题但有参考资料 06/02 13:54 : → a346571358: 有办法传回来times回到main函数是对的值吗 06/02 14:08 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.223.60.145
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1527924102.A.9EA.html
1F:推 a346571358: 谢谢你...不过我刚刚也写完了 06/02 15:28
※ 编辑: cutekid (61.223.60.145), 06/02/2018 15:39:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP