📄 大数问题.cpp
字号:
#include <stdio.h>
#include <string.h>
#define LEN 200
int Input(char n[]) // 输入数据
{ char s[LEN];
int i,l;
for(i=0;i<LEN;i++)
n[i]=0;
if(scanf("%s",s)<1) return -1;
l=strlen(s);
for(i=0;i<l;i++)
n[i]=s[l-i-1]-'0';
return 0;
}
void Print(char n[]) //输出数据
{
int j;
for(j=LEN-1; j>0; j--)
if(n[j]!=0) break;
for(; j>=0; j--)
printf("%d", n[j]);
printf("\n");
}
void Add(char a[], char b[], char d[]) //两数加法
{ int i;
for(i=0; i<LEN; i++)
d[i]=a[i]+b[i];
for(i=0; i<LEN-1; i++)
{
if(d[i]>=10)
{
d[i+1]+=d[i]/10;
d[i]=d[i]%10;
}
}
}
void Mul(char a[], char b[], char c[]) //两数乘法
{
int i, j;
for(i=0; i<LEN*2; i++)
c[i]=0;
for(i=0; i<LEN; i++)
{ for(j=0; j<LEN; j++)
{ c[i+j]+=a[j]*b[i];
if(c[i+j]>=10)
{ c[i+j+1]+=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
}
}
}
void main()
{ char a[LEN],char b[LEN],char c[2*LEN],char d[LEN+1];
printf("请输入一个大数:");
Input(a);
Print(a);
printf("请再次输入一个大数:");
Input(b);
Print(b);
printf("加法的结果是:");
Add(a,b,d);
Print(d);
printf("乘法的结果是:");
Mul(a,b,c);
Print(c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -