资源简介

c语言实现的大数四则运算

资源截图

代码片段和文件信息

#include 
#include 
#include 

#define MAX 400 
void my_read(int *a) 

int leniflag=0; 
char s[MAX]; 
aa: 
while(1) 

scanf(“%s“&s); 
len=strlen(s); 
if (s[0]==‘-‘) flag=1; 
for(i=len-flag;i>=1;i--) 

if ((s[len-i]-‘0‘)<0||(s[len-i]-‘0‘)>9) 

printf(“\t\t\t你输入的第%d位不合法,按任意键重新输!!“len-i+1); 
//getch(); 
goto aa; 

else 
a[i]=s[len-i]-‘0‘; 

if (flag) 
a[0]=-(len-1); 
else 
a[0]=len; 
break; 

return; 


void my_print(int *a) 

int i; 
if (a[0]<0) printf(“-“); 
if (a[0]==0) 

printf(“0“); 
return; 

for(i=fabs(a[0]);i>=1;i--) 
printf(“%d“a[i]); 
printf(“\n“); 


void format(int *a) 

int p; 
for(p=1;p=10;p++) 

if (p>=a[0]) a[p+1]=0; 
a[p+1]+=a[p]/10; 
a[p]=a[p]%10; 

if (p>=a[0]) a[0]=p; 
return; 

void add(int *aint *bint *c) 

int leni; 
if (a[0]else len=b[0]; 
for(i=1;i<=len;i++) 
c[i]=a[i]+b[i]; 
if (len
for (;i<=a[0];i++) 
c[i]=a[i]; 
c[0]=a[0]; 

else 

for(;i<=b[0];i++) 

c[i]=b[i]; 

c[0]=b[0]; 

format (c); 


void commaltiply (int *aint xint *b) 

int i; 
for(i=1;i<=a[0];i++) 
b[i]=a[i]*x; 
b[0]=a[0]; 
format(b); 
return; 

void matiply(int *aint *bint *c) 

int itemp[MAX]j; 
commaltiply(ab[1]c); 
for(i=2;i<=b[0];i++) 

if (b[i]==0) 

c[0]++; 
for (j=c[0];j>1;j--) 
c[1]=0; 

else 

commaltiply(ab[i]temp); 
for(j=1;jcommaltiply(temp10temp); 
add(ctempc); 



void dectobin(int *aint *b) 

int p; 
b[0]=0; 
while(a[0]>0) 

b[0]++; 
b[b[0]]=a[1]%2; 
p=a[0]; 
while(p>0) 

if (a[p]%2 && p>1) a[p-1]+=10; 
a[p]/=2; 
if (a[a[0]]==0) a[0]--; 
p--; 




void format1(int *a) 

int i; 
for (i=1;i<=a[0];i++) 
if (a[i]<0) 
{ a[i]+=10; 
a[i+1]-=1; 



void sub_1(int *aint *bint *c) 

int i; 
for (i=1;i<=b[0];i++) 
c[i]=a[i]-b[i]; 
if (a[0]==b[0]) goto loop; 
for (;i<=a[0];i++) 
c[i]=a[i]; 
loop: 
c[0]=a[0]; 
format1(c); 
i=c[0]; 
while(1) 
if (c[i]==0) i--; 
else break; 
c[0]=i; 
return; 



void sub(int *aint *bint *c) 

int iflag=0; 
for (i=1;i<=a[0];i++) 
if (a[i]!=b[i]) {flag=1;break;} 
if (flag==0) 

c[0]=0; 
return; 

flag=0; 
if (a[0]==b[0]) 

i=a[0]; 
while(i>0) 

if (a[i]>b[i]) 

sub_1(abc); 
break; 

if (a[i]
flag=1; 
sub_1(bac); 
break; 

i--; 


if (a[0]>b[0]) 
sub_1(abc); 
else 
if (a[0]
flag=1; 
sub_1(bac); 

if (flag) 
c[0]=-c[0]; 
else 
c[0]=c[0]; 

int main() 

int ia[MAX]b[MAX]c[MAX]; 
char yn; 
strat: 
while(1) 


printf(“\n\n\n“); 
printf(“\t\t\t**************************************\n“); 
printf(“\t\t\t* *\n“); 
printf(“\t\t\t* 1.大整数的加法 *\n“); 
printf(“\t\t\t* 2.大整数的减法 *\n“); 
printf(“\t\t\t* 3.大整数的乘法 *\n“); 
printf(“\t\t\t* 4.大整数进制转换 *\n“); 
printf(“\t\t\t* 5.帮助 ?*\n“); 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5251  2011-12-19 18:05  大数运算.cpp

----------- ---------  ---------- -----  ----

                 5251                    1


评论

共有 条评论