C语言如何写出计算100位大数的算法?

Python011

C语言如何写出计算100位大数的算法?,第1张

#include"stdio.h"

int getlength(char a[]){

int i=0

while(a[i])

i++

return i

}/*返回字符串的长度*/

int chartoint(char a){

return a-48

}/*将字符编程整形*/

void creatarray(char a[],char b[]){

printf("请输入第一个数:")

scanf("%s",a)

printf("请输入第二个数:")

scanf("%s",b)

}/*创建数组*/

void go(char a[],char b[],int s[]){

int alength=getlength(a)

int blength=getlength(b)

int i=alength-1

int j=blength-1

int k/*s数组下标*/

int slength

if(alength>blength)

slength=alength

else

slength=blength

k=slength

while(i>=0&&j>=0)

s[k--]=chartoint(a[i--])+chartoint(b[j--])

while(i>=0)

s[k--]=chartoint(a[i--])

while(j>=0)

s[k--]=chartoint(b[j--])

k=slength

while(k>=2){

if(s[k]>=10){

s[k-1]++

s[k]-=10

}

k--

}

printf("两数之和为:")

if(s[1]>=10){

s[0]=1

s[1]-=10

for(i=0i<=slengthi++)

printf("%d",s[i])

}

else{

for(i=1i<=slengthi++)

printf("%d",s[i])

}

printf("\n")

}

void main(){

char a[1000],b[1000]

int s[1000]

int lab

lab1: creatarray(a,b)

go(a,b,s)

printf("请输入1继续(想退出按其他数字键):")

scanf("%d",&lab)

if(lab==1)

goto lab1

}

//该程序最高可求1000位数的加法运算(更高位数你可相应设置),对于求减法和乘法也就大同小异了,这里不再赘述,你自己模仿修改一下吧

main()

{long i,j,x,num=0<br/>for(i=1i<=100i++)<br/> {x=1<br/> for(j=1j<=ij++)x*=j<br/> num+=x<br/> }

printf("%ld",num)

getch()

}