⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 大加数.c

📁 C语言源码
💻 C
字号:
/*这是一个大正数加法问题TC中应该完全可以运行。 */

#include<stdio.h> 
#include<malloc.h> 

#define HUN 10000

typedef struct node 
{ 
	int data; 
	struct node *next; 
}NODE;

NODE *insert(NODE *u,int num) /*声明返回指针函数*/
{ 
	NODE *v; /*声明结构指针*/
	v=(NODE*)malloc(sizeof(NODE)); 
	v->data=num; 
	u->next=v; 
	return(v); 
} 

NODE *addint(NODE *p,NODE *q) 
{ 
	NODE *pp,*qq,*r,*s,*t; 
	int total,number,carry; 
	pp=p->next;
	qq=q->next; 
	s=(NODE*)malloc(sizeof(NODE)); 
	s->data=-1; 
	t=s; 
	carry=0; 
	while(pp->data!=-1&&qq->data!=-1) 
	{ 
		total=pp->data+qq->data+carry; 
		number=total%HUN; 
		carry=total/HUN; 
		t=insert(t,number); 
		pp=pp->next;     
		qq=qq->next; 
	} 
	r=(pp->data!=-1)?pp:qq; 
	while(r->data!=-1) 
	{ 
		total=r->data+carry; 
		number=total%HUN; 
		carry=total/HUN; 
		t=insert(t,number); 
		r=r->next; 
	} 
	if(carry) 
		t=insert(t,1); 
	t->next=s; 
return(s); 
} 

NODE *inputint(void) 
{ 
	NODE *s,*ps,*qs; 
	struct number 
	{ 
		int num; 
		struct number *np; 
	}*p,*q; 

	int i,j,k; 
	long sum; 
	char c; 
	p=NULL; 
	while((c=getchar())!='\n') 
		if(c>='0'&& c<='9') 
		{ 
			q=(struct number *)malloc(sizeof(struct number)); 
			q->num=c-'0'; 
			q->np=p; 
			p=q; 
		}
		 
	s=(NODE*)malloc(sizeof(NODE)); 
	s->data=-1; 
	ps=s; 
	while(p!=NULL) 
	{ 
		sum=0;i=0;k=1; 
		while(i<4&&p!=NULL) 
		{ 
			sum=sum+k*(p->num); 
			i++;p=p->np;k=k*10; 
		} 
		qs=(NODE*)malloc(sizeof(NODE)); 
		qs->data=sum; 
		ps->next=qs; 
		ps=qs; 
	} 
	ps->next=s; 
	return(s); 
} 

printint(NODE *s) 
{ 
	if(s->next->data!=-1) 
	{ 
		printint(s->next); 
		if(s->next->next->data==-1) 
			printf("%d",s->next->data); 
		else
		{ 
			int i,k=HUN; 
			for(i=1;i<=4;i++,k/=10) 
				putchar('0'+s->next->data%(k)/(k/10)); 
		} 
	} 
} 

main() 
{ 
	NODE *s1,*s2,*s; 
	NODE *inputint(),*addint(),*insert_after(); 
	s1=inputint(); 
	s2=inputint(); 
	printf("S1="); 
	printint(s1); 
	printf("\n"); 
	printf("S2="); 
	printint(s2); 
	printf("\n"); 
	s=addint(s1,s2); 
	printf("S1+S2=");printint(s);printf("\n"); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -