永发信息网

大整数一般指超过十位的十进制整数,这里假定不超过五十位。这类大整

答案:1  悬赏:60  手机版
解决时间 2021-01-25 05:39
大整数一般指超过十位的十进制整数,这里假定不超过五十位。这类大整
最佳答案
define MAX 1000
#include
void add(int *a,int *b,int nNuma,int nNumb);
void plus(int *a,int *b,int nNuma,int nNumb);
bool compare(int *a,int *b,int nNuma,int nNumb);
int main()
{
int nNuma,nNumb;
nNuma=0;
nNumb=0;
int i;
char c1,c2;
char a1[MAX],b1[MAX];
int a[MAX],b[MAX];
printf("请输入第一个数
");
for(i=0;; i++)
{
nNuma++;
scanf("%c",&c1);
a1[i]=c1;
if(c1=='
')
{
nNuma--;
break;
}
}
printf("请输入第二个数
");
for(i=0;; i++)
{
nNumb++;
scanf("%c",&c2);
b1[i]=c2;
if(c2=='
')
{
nNumb--;
break;
}
}
for(i=0; i {
a[i]=a1[i]-'0';
}
for(i=0; i {
b[i]=b1[i]-'0';
}

add(a,b,nNuma,nNumb);
if(compare(a,b,nNuma,nNumb))
printf("a>=b
");
else
printf("a ");
plus(a,b,nNuma,nNumb);
return 0;

}
//大数减法
void plus(int *a,int *b,int nNuma,int nNumb)
{
int i,h;
int k=0;
int c[MAX];
//int ma[MAX];
int na,nb;
int *ma;
int *mb;
na=nNuma;
nb=nNumb;
ma=a;
mb=b;
if(!compare(a,b,nNuma,nNumb))
{
ma=b;
mb=a;
na=nNumb;
nb=nNuma;
}

for(; nb-1>=0; na--,nb--)
{
if(ma[na-1] {
ma[na-2]--;
h=10;
}
else
h=0;

c[k]=ma[na-1]-mb[nb-1]+h;   //h为借位
k++;
}
if(ma[na-1] {
ma[na-2]--;
h=10;
}
else
h=0;
if(na-1>=0)
{
for(i=nb-1; i>=0; k++,i--)
c[k]=ma[i];
}
printf("差为:  ");
if(!compare(a,b,nNuma,nNumb));
else
printf("-");
for(int j=k-1; j>=0; j--)
printf("%d",c[j]);
printf("
");



}
//大数加法
void add(int *a,int *b,int nNuma,int nNumb)
{
int i,h,t;
h=0;
int k=0;
int c[MAX];
int na=nNuma;
int nb=nNumb;
for(; na-1>=0&&nb-1>=0; na--,nb--)
{
t=a[na-1]+b[nb-1]+h;
c[k]=t%10;
h=t/10;
k++;
}
if(t>=10)
h=t/10;
else
h=0;
if(na==nb)
{
c[k]=h;
k++;
}
if(na-1>=0)
{
for(i=na-1; i>=0; k++,i--)
{
c[k]=a[i]+h;
h=0;
}
}

if(nb-1>=0)
{
for(i=nb-1; i>=0; k++,i--)
{
c[k]=b[i]+h;
h=0;
}
}
printf("差为:  ");
for(int j=k-1; j>=0; j--)
printf("%d",c[j]);
printf("
");

}
bool compare(int *a,int *b,int nNuma,int nNumb)
{
int i=0;
bool sign;
int na=nNuma;
int nb=nNumb;
if(na>nb)
sign=true;
else if(na==nb)
{
while(a[i]==b[i])
i++;
if(a[i] else   sign=true;
}

else if(nana
sign=false;
return sign;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
华宁县文化局地址有知道的么?有点事想过去
中国邮政三农服务中心(326省道)怎么去啊,我
沙眼和急性结膜炎是常见的传染性极强的眼病,
力帆520轿车近光灯炮怎么老爱坏
如何消除洋葱的怪味
飘香炸串地址在哪,我要去那里办事
急!哪有卖衣服上带个七字的衣服啊?
兔子药神虫速灭,神菌速灭,神球速灭`打了后还
(10分)旅游地理阅读资料,完成下列要求。材
关于闵行区昆阳路越江隧道工程什么时候开始
糖化血红蛋白高吃什么
日语从4级到2级要多少时间
“想知道梨子的味道,就要亲口尝一尝;想学会
大金空调kfr一35w/bp出现外机风机转,压缩机不
欲除去硝酸钾中混有少量的铜 镁 硫酸根离子.
推荐资讯
中国福利彩票(电业家园正门中国福利彩票)地址
中国农业银行(双港分理处)地址在哪,我要去那
【树大招风风撼树】树大招风风撼树,人为名高
手机天龙八部能和电脑在一个区一起玩吗
关于概率论的,统计学的知识
实况足球8队员状态怎么提高
求男主是平子真子的死神同人
龙眼干买多了有点吃不完 能放冰箱保鲜么
内蒙古早晚温差大吗?
现在还有开放的聊天室吗,
过年准备开车回家,想问一下: 本人红旗轿车
北京四惠附近哪有休闲的地方?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?