#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define MAXSIZE 51
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType elem[MAXSIZE];
ElemType yuansu_a[MAXSIZE];
ElemType yuansu_b[MAXSIZE];
int length_a;
int length_b;
}SeqList;
int CreateRandomBigInt(SeqList *L)
{
int i,k,j;
srand((unsigned)time( NULL ) );
i=rand()%(50);
L->length_a =i;
for(k=0;k<i;k++)
L->yuansu_a[k] = rand()%(9);
printf("\n第一次创建l一个%d位的大数\n",i);
for(k=0;k<i;k++)
printf("%d",L->yuansu_a[k] );
printf("\n");
j=rand()%(50);
L->length_b=j;
for(k=0;k<j;k++)
L->yuansu_b[k] = rand()%(9);
printf("\n第二次创建了一个%d位的大数\n",j);
for(k=0;k<j;k++)
printf("%d",L->yuansu_b[k] );
printf("\n");
return 1;
}
int AddBigInt(SeqList *q)
{
int k,l,t,count=0,zc=0,zcc=0;
int logo=0;
int longer[100],shorter[100];
int i,j;
printf("\n两大数相加之后的结果为:\n");
if(q->length_a > q->length_b)
{
k=q->length_a;
count=k;
i=k;
l=q->length_b;
j=l;
if(q->yuansu_a[0]==9)
{
k+=1;
count=k;
i=k;
}else{;}
}else
{
k=q->length_b;
count=k;
i=k;
l=q->length_a;
j=l;
if(q->yuansu_b[0]==9)
{
k+=1;
count=k;
}else{;}
}
if(q->length_a > q->length_b)
{
for(t=0;t<q->length_a;t++)
{
longer[t]=q->yuansu_a[t];
}
for(t=0;t<q->length_b;t++)
{
shorter[t]=q->yuansu_b[t];
}
}else{
for(t=0;t<q->length_b;t++)
{
longer[t]=q->yuansu_b[t];
}
for(t=0;t<q->length_a;t++)
{
shorter[t]=q->yuansu_a[t];
}
}
while(l>=0)
{
if(longer[k]+shorter[l]>=10)
{
q->elem[k]=(longer[k]+shorter[l]+logo)%10;
if(l==0)
{
zcc=longer[k]+shorter[l]+logo;
}
else
{
zc=longer[k]+shorter[l]+logo;
}
logo=0;
if(zc>=10&&k!=i&&l!=j)
{
logo=1;
}
if(longer[k]+shorter[l]>=10&& k==i&&l==j)
{
logo=1;
}
}else{
if(zc>=10&&k!=i&&l!=j)
{
q->elem[k]=longer[k]+shorter[l]+1;
zc=0;
if(q->elem[k]>=10)
{
zc=q->elem[k];
q->elem[k]=q->elem[k]%10;
logo=1;
}
else
{
logo=0;
}
}
else
{
q->elem[k]=longer[k]+shorter[l];
logo=0;
}
}
k--;
l--;
}
while(k>=0)
{
if(zcc>=10)
{
q->elem[k]=longer[k]+1;
if(q->elem[k]>=10)
{
zcc=q->elem[k];
q->elem[k]=q->elem[k]%10;
}
}
else
{
q->elem[k]=longer[k];
}
k--;
zcc=0;
}
for(i=0;i<count;i++)
printf("%d ",q->elem[i]);
return 1;
}
int main()
{
SeqList p;
CreateRandomBigInt(&p);
AddBigInt(&p);
return 0;
}
用数组实现随机大数的存储和相加
最新推荐文章于 2021-05-17 17:26:32 发布