之前刷笔试题遇到一道挺有意思的题,就是利用C语言编程得到2的1000次方的值。
大家都知道C语言编程时对于每个变量都严格定义类型,最大的整形也不过为long int类型,unsigned int类型范围在0~65535之间,而2的1000次方明显远大于65535,所以用一般的数值运算2^1000次方是完全行不通的,所以需要转换思路,试想一下2的1000次方将会是一个有很多位的数值,所以我们可以考虑从数组的角度入手,那么问题就很简单了,下面提供思路。
先创建一个足够大的数组,用来存储计算出来的值。因为要模拟不断的乘以2,不断地进位,所以我们可以先设置第一位为1,其余全部为0,如果遇到进位了,可以将进位的这一位从0变为1,之后的乘以2运算中可以每一个非0元素都可以乘以2。
#include <stdio.h>
int main()
{
int t=0;
int a[500]={
0};//将存放2的1000次方数值的数组初始化
int i=0;