Type丶Alpha 2016-01-07 11:02 采纳率: 100%
浏览 1404
已采纳

想把这个代码的界面改一下,但不知道加在哪

#include
#include
#include
typedef struct node{
int e;
struct node *next;
struct node *prir;
} node;
main()
{
node *num1,*num2,*sum;
node *create(node *n);
int output(node *n);
node *add_Num(node *n1,node *n2);
num1=(node *)malloc(sizeof(node));
num2=(node *)malloc(sizeof(node));
num1=create(num1);
num2=create(num2);
sum=add_Num(num1,num2);
output(sum);
}
int output(node *n)
{
node *p;
if(n->e printf("-");
printf("%d,",n->next->e);
p=n->next->next;
while(p!=n->next)
{
if(p->e if(p->e if(p->e printf("%d,",p->e);
p=p->next;
}
printf("\b \b\n");
}

node *create(node *n)
{
node *p,*t;
int e,i;
t=(node *)malloc(sizeof(node));
i=scanf("%d",&e);
if(ee=-1;
else n->e=1;
t->e=n->e*e;
n->next=t;
t->next=t;
t->prir=t;
n->prir=NULL;
p=n->next;
while(i!=0)
{
if(getchar()==',')
i=scanf("%d",&e);
else break;
t=(node *)malloc(sizeof(node));
t->e=e;
p->next=t;
t->prir=p;
t->next=n->next;
n->next->prir=t;
p=p->next;
}
return(n);
}
node *add_Num(node *n1,node *n2)
{
node *p1,*p2,*t,*s,*sum;
int e1,e2,carry;
p1=n1->next->prir;
p2=n2->next->prir;
e1=n1->e;
e2=n2->e;
sum=(node *)malloc(sizeof(node));
sum->e=1;
sum->prir=NULL;
s=(node *)malloc(sizeof(node));
s->e=p1->e*e1+p2->e*e2;
p1=p1->prir;
p2=p2->prir;
if(e1*e2==1)
{
sum->e=e1;
s->e=abs(s->e);
if(s->e>=10000)
{
s->e-=10000;
carry=1;
}
else carry=0;
}
else
if(s->e>=0) carry=0;
else
{
s->e+=10000;
carry=-1;
}
t=s;
s->next=s;
s->prir=s;
sum->next=s;
while(p1!=n1->next->prir&&p2!=n2->next->prir)
{
s=(node *)malloc(sizeof(node));
s->e=p1->e*e1+p2->e*e2+sum->e*carry;
p1=p1->prir;
p2=p2->prir;
if(e1*e2==1)
{
sum->e=e1;
s->e=abs(s->e);
if(s->e>=10000)
{
s->e-=10000;
carry=1;
}
else carry=0;
}
else
if(s->e>=0) carry=0;
else
{
s->e+=10000;
carry=-1;
}
s->next=t;
t->prir=s;
s->prir=sum->next;
sum->next->next=s;
t=t->prir;
}

if(p1==n1->next->prir)
while(p2!=n2->next->prir)
{
s=(node *)malloc(sizeof(node));
s->e=p2->e*e2+sum->e*carry;
p2=p2->prir;
if(e1*e2==1)
{
sum->e=e1;
s->e=abs(s->e);
if(s->e>=10000)
{
s->e-=10000;
carry=1;
}
else carry=0;
}
else
if(s->e>=0) carry=0;
else
{
s->e+=10000;
carry=-1;
}
s->next=t;
t->prir=s;
s->prir=sum->next;
sum->next->next=s;
t=t->prir;
}
if(p2==n2->next->prir)
while(p1!=n1->next->prir)
{
s=(node *)malloc(sizeof(node));
s->e=p1->e*e1+sum->e*carry;
p1=p1->prir;
if(e1*e2==1)
{
sum->e=e1;
s->e=abs(s->e);
if(s->e>=10000)
{
s->e-=10000;
carry=1;
}
else carry=0;
}
else
if(s->e>=0) carry=0;
else
{
s->e+=10000;
carry=-1;
}
s->next=t;
t->prir=s;
s->prir=sum->next;
sum->next->next=s;
t=t->prir;
}
if(carry!=0)
{
s=(node *)malloc(sizeof(node));
s->e=1;
carry=0;
s->next=t;
t->prir=s;
s->prir=sum->next;
sum->next->next=s;
t=t->prir;
}
sum->next=t;
do
{
if(t->e==0)
{
sum->next=t->next;
t->next->prir=t->prir;
t->prir->next=t->next;
free(t);
}
else break;
t=sum->next;
}while(t!=sum->next->prir);
return(sum);
}

把这段代码加上
printf("求两个任意长整数的和\n\n");
printf("输入时每四位用逗号隔开\n\n如:123456789012345\n\n");

printf("输入格式为:123,4567,8901,2345\n\n");

printf("输入整数1:");
printf("输入整数2:");
printf("\n两整数的和为:\n\n");
这几句应该加在哪,求大神帮忙

  • 写回答

3条回答 默认 最新

  • ysuwood 2016-01-07 11:08
    关注
     int main()
    {
        node *num1,*num2,*sum;
        node *create(node *n);
        int output(node *n);
        node *add_Num(node *n1,node *n2);
    
        num1=(node *)malloc(sizeof(node));
        num2=(node *)malloc(sizeof(node));
        printf("求两个任意长整数的和\n\n"); 
        printf("输入时每四位用逗号隔开\n\n如:123456789012345\n\n");
        printf("输入格式为:123,4567,8901,2345\n\n");
    
        printf("输入整数1:");
        num1=create(num1);
        printf("输入整数2:"); 
        num2=create(num2);
    
        printf("\n两整数的和为:\n\n");
        sum=add_Num(num1,num2);
        output(sum);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 请教 麒麟系统挂载怎么安装
  • ¥15 如何在ns3中实现路径的自由切换
  • ¥20 SpringBoot+Vue3
  • ¥15 IT从业者的调查问卷
  • ¥65 LineageOs-21.0系统编译问题
  • ¥30 关于#c++#的问题,请各位专家解答!
  • ¥15 App的会员连续扣费
  • ¥15 不同数据类型的特征融合应该怎么做
  • ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
  • ¥15 用联想小新14Pro