AlenaNuna

导航

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…>_<

posted on 2024-09-05 01:18  AlenaNuna  阅读(7)  评论(0编辑  收藏  举报