一路艰辛一路收获,成功爬过金字塔的小蜗牛别提多高兴了。这不为了向曾经帮助他的哥们们表达谢意,蜗牛宴请这些亲朋好友。
席间,蜗牛发现老鹰一直愁眉不展。就关切的问下老鹰。老鹰说:“近来,有一道题我一直没解决,很是郁闷”。蜗牛说:“说说看,看能不能帮你解决掉,老朋友”。老鹰说:“给一个数,用二进制表达,如果这个数转化为二进制后小数位超过20位,那么只要前二十位,其余的不要”,小蜗牛现在很忙,没时间帮助老鹰。
亲爱的兄弟姐妹们,不知道你能否帮忙解决问题。来试下,加油!!!
1 1.5 0.000001 0.000000999
1 1.1 0.00000000000000000001 0.00000000000000000001
题不难,思绪却很乱!
AC码:
#include<stdio.h> int main() { double n; int i,count,num[25],m; while(~scanf("%lf",&n)) { m=((int)n); // 把整数部分转化为二进制 count=0; do { num[count]=m%2; m=m/2; count++; }while(m!=0); for(i=count-1;i>=0;i--) printf("%d",num[i]); // 把整数部分转化为二进制结束 count=0; // 把小数部分转化为二进制 for(i=0;i<25;i++) num[i]=0; n=n-((int)n); while(count<20&&n!=0) { n=n*2; if(n>=1) { num[count]=1; n=n-((int)n); } else num[count]=0; count++; } count--; while(count>=0&&num[count]==0) count--; if(count>=0) printf("."); for(i=0;i<=count;i++) printf("%d",num[i]); printf("\n"); } return 0; }
NYOJ 647 奋斗的小蜗牛在请客,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012804490/article/details/25134425