2008年北大信科研究生复试 机考真题(一)--大数据十进制转换
来源:互联网 发布:奥比岛刷奥币软件 编辑:程序博客网 时间:2024/05/20 08:44
(注意是10进制数字的个数可能有30个,而非30bits的整数)
0138
01111000
本题思路:
十进制转换为二进制问题,这种计算在纸上很容易计算是吧,那么如何在计算机中实现呢?首先我们明确一个十进
数反复除上2,位数肯定一直在减少。在本程序里面用num数组存放除以2后的结果。比如说求19的二进制,那么
num[0]=1,num[1]=9是初值。经过一轮迭代后,binary[0]='1',因为19是奇数嘛!num[0]=0,num[1]=9,在
求num[1]时,c=10,因为temp暂存的最高位是奇数1嘛!肯定要借位嘛!如果不借位,结果是4,正确结果是9!!
借位的意思就是次高位得加上10,么么哒~for (int j = i; j < len; j++)这个循环就是从最高位依次除以2
将新结果存放到num矩阵中!如果num[i]=0说明i位被除没了(i位一直是待处理数字的最高位),比如说19/2=9,
num[0]=0,i就变成1,最高位是个位~,最后再讲bianry数组倒着输出一遍,ok结束了,么么哒~亲!!!
#include<stdio.h>char s[35];//十进制数最多30位char binary[200];//二进制最多120位int num[35];int main(){int len;//数字的位数int temp;//记录当前十进制数字的最高位while (scanf("%s", s) != EOF){for (len = 0; s[len]; len++){num[len] = s[len] - '0';}int i = 0; int binary_length = 0;while (i < len)//num[i]永远是非0的待处理数最高位{binary[binary_length++] = num[len - 1] % 2 + '0';//十进制数字最后一位如果是奇数则为1,反之为0int c = 0;for (int j = i; j < len; j++){temp = num[j];num[j] = (num[j] + c) / 2;//j == i时,num[i]存放的是最高位除上2的结果if (temp & 1)//temp是奇数{c = 10;//高位是奇数,高位的下一位除以2绝对得借位!}else { c = 0; }//高位是偶数,不需要借位}if (num[i] == 0)//高位已经为0,{i++;}}for (int j = binary_length - 1; j >= 0; j--){printf("%c", binary[j]);}printf("\n");}return 0;}
阅读全文
0 0
- 2008年北大信科研究生复试 机考真题(一)--大数据十进制转换
- 中大-复试-2008-编程题一
- 复试 北大
- 中大-复试-2012(2011)-编程题一
- 中大-复试-2010-编程题一
- 中大-复试-2009-编程题一
- 中大-复试-2005-编程题一
- 大数据,科研论文发表分析
- 大数据人才流失: 科研为何陷入困境
- 大数据人才流失: 科研为何陷入困境
- 北理工2011年计算机复试上机题(一)
- 数据进制(二进制、十进制、十六进制)的转换详解
- 数据进制(二进制、十进制、十六进制)的转换详解
- 北大教授王汉生:大数据被神化
- C#【数据转换】十进制\byte[]相互转换
- 在中科研究院的日子(一)
- matlab 常用代码(有数据,可以运行,对科研帮助大)案例以后补齐
- [科研论文]W5100相关科研论文(一)
- HDU
- 【POI2014】Rally(拓扑序+线段树)
- 计算机网络(三) --- 浅析TCP/IP分层模型与通信示例
- spring定时任务
- leetcode Symmetric Tree
- 2008年北大信科研究生复试 机考真题(一)--大数据十进制转换
- Android6.0和7.0新特性分析
- 入坑 可持久化线段树——主席树
- 关于流程管理软件activiti eclipse插件安装
- RecyclerView内置Bug
- Java中的comparable和comparator详解
- 01背包——JAVA实现
- 第四周--3
- Android常见的异常及处理