问题描述:设计一个程序实现两个任意长的整数的求和运算。
基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。
任意长的整数加法 用c语言编写的程序
答案:2 悬赏:40 手机版
解决时间 2021-02-14 05:29
- 提问者网友:半生酒醒
- 2021-02-13 13:17
最佳答案
- 五星知识达人网友:玩世
- 2021-02-13 14:49
利用双向链表是有思路了,但利用双向循环链表就不知道了
全部回答
- 1楼网友:逃夭
- 2021-02-13 15:09
vs2008测试通过,请采纳
#include
#include
#define n 20
void addmain(char s1[n],char s2[n],int sresult[n]);
void main()
{
int sresult[n+1];
int x;
char s1[n],s2[n];
printf("请选择运算类型,加输入1,减输入2:");
scanf("%d",&x);
switch(x)
{
case 1:
printf("你选择了加法,请输入两个整数:");
scanf("%s%s",s1,s2);
printf("\n%s + %s",s1,s2);
addmain(s1,s2,sresult);
break;
case 2:
printf("你选择了减法");
break;
default:
printf("error");
}
}
void addmain(char s1[n],char s2[n],int sresult[n+1])
{
int sa[n],sb[n];
int i,x;
int *p3;
char *p1,*p2;
p1=s1;
p2=s2;
p3=sresult;
i=0;
*(p3+1)=0;
while(*(p1+i)!='\0' && *(p2+i)!='\0' && i<=(n+1))
{
x=*(p3+i+1)+(*(p1+i)-48)+(*(p2+i)-48);
if (x>9)
{
*(p3+i+1)=x-10;
*(p3+i+1+1)=1;
}
else
{
*(p3+i+1)=x;
*(p3+i+1+1)=0;
}
i++;
}
if (*(p1+i)=='\0')
{
while(*(p2+i)!='\0' && i<=(n+1))
{
x=*(p3+i+1)+(*(p2+i)-48);
if (x>9)
{
*(p3+i+1)=x-10;
*(p3+i+1+1)=1;
}
else
{
*(p3+i+1)=x;
*(p3+i+1+1)=0;
}
i++;
}
}
else
{
while(*(p1+i)!='\0' && i<=(n+1))
{
x=*(p3+i+1)+(*(p1+i)-48);
if (x>9)
{
*(p3+i+1)=x-10;
*(p3+i+1+1)=1;
}
else
{
*(p3+i+1)=x;
*(p3+i+1+1)=0;
}
i++;
}
}
*p3=i;
i=0;
printf("结果为:");
while(i<*p3)
{
printf("%d",*(p3+*p3-i));
i++;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯