因为int存在上限2147483647,所以有可能出现超过该值的数而存在无法存储,所以我们可以选择使用数组长度表示位数,从而达到超过上限的数的存储,下面附上代码:
#define N 100
#include<stdio.h>
int main(void)
{
int a[N],s,i,j,x,cp;
a[N-1] = 1; //a[N-1]表示的是个位,先置为一
s=N-2; //s表示最大位数的前一项
for( i=1 ; i<101 ; i++ ) //因为是十三的一百次方,所以i的终止条件为101
{
cp=0;
for( j=N-1 ; j!=s ; j-- )
{
x=a[j]*13+cp;
a[j]=x%10; //第一次运行a[j]=3,对应的个位就是3
cp=x/10;
}
while(cp){
a[s--] = cp%10; //a[s]=1,对应的十位就是1,然后s前移
cp/=10;
}
}
for(i=s+1 ; i<N ; i++ )
{
printf("%d",a[i]);
}
return 0;
}
觉得不好理解的话,你可以对应画一次图,示意一次运行过程。