c++中大数的四则运算,急求思路和代码,望高手指点!
答案:4 悬赏:10 手机版
解决时间 2021-04-26 13:13
- 提问者网友:嗝是迷路的屁
- 2021-04-26 10:04
c++中大数的四则运算,急求思路和代码,望高手指点!
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-04-26 11:16
用字符串实现
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);
}
这是加法和乘法的代码
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);
}
这是加法和乘法的代码
全部回答
- 1楼网友:污到你湿
- 2021-04-26 13:03
移位
- 2楼网友:话散在刀尖上
- 2021-04-26 11:59
我们大一的大作业就是实现任意长的数的四则运算,我记得我当时是用双向链表实现的,感觉还是蛮复杂的。
- 3楼网友:旧脸谱
- 2021-04-26 11:54
思路:内存要拼接使用。
新手的话,那就用字符串数组吧,虽然占空间更多。有能力的话最好用链表,双向
可以只用一个数表示正负,链表或者字符串数组表示数本身,在进行运算
新手的话,那就用字符串数组吧,虽然占空间更多。有能力的话最好用链表,双向
可以只用一个数表示正负,链表或者字符串数组表示数本身,在进行运算
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯