关于2^100的一些问题
#include<stdio.h>#include<stdlib.h>
#define MAXSIZE 1000
void main()
{
int i, j, mark = 0, carry = 0;
int data[MAXSIZE] = { 1, 0 };
for (i = 0; i < 100; i++) {
for (j = 0, carry = 0; j <= mark; j++)
{
data[j] = data[j] * 2 + carry; 这段核心代码是真心不懂啊,只能在纸上顺着循环写上几个数字,不理解数值位增加时数组空间变化怎样的?
carry = data[j] / 10;
data[j] = data[j] % 10;
}
if(carry) {
data[++mark] = carry;
}
carry = 0;
}
for (i = mark; i >= 0; i--)
printf("%d", data[i]);
printf("\n");
}
不懂的地方有:
1.不知道在数组中的数值在循环过程中是怎样变化的尤其是在数值位增加时。