#include <stdio.h>
#include <conio.h>
#define N 10000
typedef struct node
{
int n;
struct node *next;
}r,*pr;
pr inputint()
{
pr p,q=NULL,q1=(pr)malloc(sizeof(r)),p1=q1,p2=q1;
int i,j,s;char c;
while((c=getchar())!='\n')
{
p=(pr)malloc(sizeof(r));
p->n=c-'0';
p->next=q;
q=p;
}
while(p)
{
i=0,j=1,s=0;
while(i<4&&p)
{
s+=j*p->n;
i++;
j*=10;
p=p->next;
}
q1->n=s;
p2=q1;
q1->next=(pr)malloc(sizeof(r));
q1=q1->next;
}
p2->next=NULL,free(q1);
return p1;
}
void insert(pr p,int n)
{
p->next=(pr)malloc(sizeof(r));
p=p->next;
p->n=n;
}
pr plus(pr p1,pr p2)
{
int s;pr p=(pr)malloc(sizeof(r)),q,m=p,pp1=p1,pp2=p2;
int i=0;p->n=-1;
while(pp1&&pp2)
{
s=(pp1->n+pp2->n+i)%N;
i=(pp1->n+pp2->n+i)/N;
insert(p,s);pp1=pp1->next,pp2=pp2->next;
}
q=pp1?pp1:pp2;
while(q)
{
s=(q->n+i)%N;i=(q->n+i)/N;
insert(p,s);
q=q->next;
}
if(i)insert(p,1);
p->next=NULL;
return m->next;
}
void printint(pr p)
{
pr q,s=NULL,pp=p;
while(pp)
{
q=(pr)malloc(sizeof(r));
q->n=pp->n;
q->next=s;
s=q;
pp=pp->next;
}
while(s)
{
printf("%d",s->n);
s=s->next;
}
}
void main()
{
pr p1,p2,s;clrscr();
printf("please input the number1:");
p1=inputint();
printf("please input the number2:");
p2=inputint();
printf("the result is follows:");
s=plus(p1,p2);
printint(s);
getch();
}
大家帮忙找找问题吧,相信会有所收获的。
[此贴子已经被作者于2007-4-17 17:16:22编辑过]