HJ95 人民币转换
题面:https://www.nowcoder.com/practice/00ffd656b9604d1998e966d555005a4b?tpId=37&tqId=21318&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
题目本身不难,关键是这个题意我真读不懂。。。
0.5我还以为0元也得输出。。我以为得输出0元伍角,结果不用0元
然后10.07我以为得十元零七分,结果十元七分就行。。
得亏这是acm赛制不是oi赛制= =这题意好多细节我真的理解错误
然后就是疯狂吞精度= =想把小数点后两位取出来变成整数怎么就那么难。最后为了防止吞精度只能先四舍五入把小数点后两位取出来,再拆分成角和分。
1 #include<bits/stdc++.h> 2 using namespace std; 3 double n; 4 int zs,xs; 5 string s[20]; 6 void init(){ 7 s[0]="零"; 8 s[1]="壹"; 9 s[2]="贰"; 10 s[3]="叁"; 11 s[4]="肆"; 12 s[5]="伍"; 13 s[6]="陆"; 14 s[7]="柒"; 15 s[8]="捌"; 16 s[9]="玖"; 17 s[10]="拾"; 18 s[11]="佰"; 19 s[12]="仟"; 20 s[13]="万"; 21 s[14]="亿"; 22 s[15]="元"; 23 s[16]="角"; 24 s[17]="分"; 25 s[18]="零"; 26 s[19]="整"; 27 scanf("%lf",&n); 28 zs=n; 29 xs=round(n*100); 30 xs=xs%100; 31 return; 32 } 33 void Work2(int x){ 34 bool yq=0,yb=0,shi=0; 35 if(x>=1000){ 36 cout<<s[x/1000]<<s[12]; 37 x%=1000; 38 yq=1; 39 } 40 if(x>=100){ 41 cout<<s[x/100]<<s[11]; 42 x%=100; 43 yb=1; 44 } 45 if(x>=10){ 46 if(yq&&!yb)cout<<s[18]; 47 if(x/10!=1) cout<<s[x/10]<<s[10]; 48 else cout<<s[10]; 49 x%=10; 50 shi=1; 51 } 52 if(x>=0){ 53 if(!x&&!yq&&!yb&&!shi){ 54 cout<<s[0]; 55 return; 56 } 57 if((yq&&!yb&&!shi)||(yb&&!shi)) 58 if(x) cout<<s[18]; 59 if(x>0) cout<<s[x]; 60 } 61 return; 62 } 63 void Xiaoshu(bool b){ 64 int jiao=xs/10,fen=xs%10; 65 if(!b){ 66 if(jiao)cout<<s[jiao]<<s[16]; 67 if(fen)cout<<s[fen]<<s[17]; 68 return; 69 } 70 if(jiao)cout<<s[jiao]<<s[16]; 71 if(fen)cout<<s[fen]<<s[17]; 72 return; 73 } 74 void Work(){ 75 printf("人民币"); 76 int yiyi=1e8,yiwan=1e4; 77 bool b=zs>0; 78 if(zs>=yiyi){ 79 Work2(zs/yiyi); 80 zs%=yiyi; 81 cout<<s[14]; 82 } 83 if(zs>=yiwan){ 84 Work2(zs/yiwan); 85 zs%=yiwan; 86 cout<<s[13]; 87 } 88 if(zs>0){ 89 Work2(zs); 90 } 91 if(b)cout<<s[15]; 92 if(xs!=0)Xiaoshu(b); 93 else cout<<s[19]; 94 return; 95 } 96 int main(){ 97 init(); 98 Work(); 99 return 0; 100 }
真的无奈了,发现自己好多地方学的不咋地。(敲头
今天上午做遥感实验去了,结果一回来草草吃了饭,想起虽然学校压根没有3个月以上的空闲时段(甚至大四抓出勤抓得更严= =),但是说不定我可以在长春本地找到合适的实习呢?结果一顿寻找猛如虎,最后成功得出结论:长春真的连个像样的软开公司都没有,更别提实习岗了。彻底无语了,现在明白了去发达城市读书的重要性了= =
结果找实习无果,全都是一堆乱七八糟杂七杂八的小公司,公司规模甚至不到20人,要不就是离宿舍15公里的,远得离谱。无数次感叹也许我应该搞个车= =但是本科生不让在学校里开车,也没有停车位。又气又困又无语,直接倒头就睡。
然后睡到晚上七点,跑去听华为计算在b站的宣讲会。才两三百个观众,还好多是想干硬件岗的,感觉好开心啊,没人跟我抢通用软开=v=然后随手刷了二十块礼物就榜一了=。=看完宣讲会就九点,然后吃晚饭,吃完都十一点了。这一度让我觉得我是不是应该考虑一下一天只吃一顿,才有更多时间打代码。
然后十一点打这个题打到十二点,就开始debug=。=开始各自题意理解不清地试错,然后研究如何搞定这个精度问题。最大的感受就是我以前学的真不咋地,连精度问题都没闹明白。最近每天写华为的机试题,总觉得每道题都会写,但是每道题都会在意想不到的地方卡壳一会,然后每道题都能因此习得新的知识或者技巧,倒也挺不错的。只是会自我怀疑了,我这么不靠谱,华为机试真能满分么………………不会翻车吧T_T ??别啊
华为机试题快写完了。真讨厌学校的实验课啊,又没有意义又耽误我时间。今天还处理了一堆支书的事情。写完这个就去写面试101题吧,然后就去写lc100题,嗯…
还得学学TCP/IP协议,数据库,前端blabla…>_<