永发信息网

c++中大数的四则运算,急求思路和代码,望高手指点!

答案:4  悬赏:10  手机版
解决时间 2021-04-26 13:13
c++中大数的四则运算,急求思路和代码,望高手指点!
最佳答案
用字符串实现
void plus(char *a,char *b)
{
int lena,lenb,t,jinwei=0,k;
char big[10000],small[10000];
lena=strlen(a); lenb=strlen(b);
if(lena>=lenb)
{
strcpy(big,a); strcpy(small,b);
}
else
{
strcpy(big,b); strcpy(small,a);
t=lena; lena=lenb; lenb=t;
}
lena--;lenb--;
while(lenb>-1)
{
k=big[lena]+small[lenb]+jinwei-96;
big[lena]=k%10+48;
jinwei=k/10;
lena--; lenb--;
}
while(lena>-1 && jinwei)
{
k=big[lena]+jinwei-48;
big[lena]=k%10+48;
jinwei=k/10;
lena--;
}
if(jinwei)
{
strcpy(a,"1"); strcat(a,big);
}
else
strcpy(a,big);
}
void mul(char *a,char *b)
{
int i,j,jinwei,k,t;
char result[10000],sum[10000]="0";

for(i=0;i {
jinwei=0;
for(j=strlen(b)-1,result[j+1]='\0';j>-1;j--)
{
k=(a[i]-48)*(b[j]-48)+jinwei;
result[j]=k%10+48;
jinwei=k/10;
}
if(jinwei)
{
for(j=strlen(b)+1;j>0;j--)
result[j]=result[j-1];
result[j]=jinwei+48;
}
plus(sum,result);
strcat(sum,"0");
}
sum[strlen(sum)-1]='\0';
strcpy(a,sum);
}
这是加法和乘法的代码
全部回答
移位
我们大一的大作业就是实现任意长的数的四则运算,我记得我当时是用双向链表实现的,感觉还是蛮复杂的。
思路:内存要拼接使用。
新手的话,那就用字符串数组吧,虽然占空间更多。有能力的话最好用链表,双向
可以只用一个数表示正负,链表或者字符串数组表示数本身,在进行运算
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么样才能删除消息记录
好看的动画剧场版或TV版
玩家宝宝的录像怎么上传到校内?谁能告诉我?
!问问等级经验
到日本药妆买雪肌精是多少钱啊?效果如何啊?
请问下哪里可以找到机动车查询
运用反复手法的作文
安徽排档地址在什么地方,想过去办事
参加成人高考需要考前培训吗
他们说在月经来潮的前后做最安全?对吗?
弹弹堂玩不了?
陕西润浙纺织有限公司地址有知道的么?有点事
小JP蛟龙怎么加点
丝路打据点能拿到据点旗?
为什么爱我的人老是因为小事和我吵架?
推荐资讯
怎么使用暴力破译啊?
柴可夫斯基[六月船歌]的创作背景和所表达的情
a平方b平方+a平方+b平方+10ab+16=0,,,求a平方
吉林天一生物科技有限公司怎么联系电话是…
求Hebe在《love》MV里可以当作QQ头像的图
在工作中最有效的学习方发是什么
陕西的伙计们帮忙啊!
蓝桥休闲吧地址有知道的么?有点事想过去
什么是爱?内心的感觉,别转载
手脚关节肿,不痛也不痒,好几个月了去医院查没
槟榔树心包白鸡 吃有什么好处
张子强为什么救叶继欢,叶继欢服刑期间为什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?