C语言 大数加法

属于遗留问题,现在已解决。
如有问题,恳请指正!

#include<stdio.h>
#include<string.h>
char fir[1000000]={'\0'},sec[1000000]={'\0'},last[10000000]={'\0'};
int main(){
	int i,j,k;
	i=j=k=0;
	int first=0,second=0,judge=0,judge_=0;
	printf("this is a program about plus.\n");
	printf("first number:\n");
	scanf("%s",fir);
	printf("second number:\n");
	scanf("%s",sec);
	first=strlen(fir);
	second=strlen(sec);
	//printf("%d\n",first);
	//printf("%d\n",second);
	judge=judge_=0;
	if(first>second){
		for(i=second-1,j=first-1;i>=0;j--,i--){
			judge=fir[j]-48+sec[i]-48;
			if(judge>9&&judge_==0){
				judge_=1;
				judge=judge%10;
				last[j]=judge+48;
			}
			else if(judge>9&&judge_==1){
				judge=judge+1;
				judge_=1;
				judge=judge%10;
				last[j]=judge+48;
			}
			else if(judge<=9&&judge_==1){
				judge=judge+1;
				if(judge>9){
					judge_=1;
					judge=judge%10;
					last[j]=judge+48;
				}
				else{
					last[j]=judge+48;
					judge_=0;
				}
			}
			else if(judge<=9&&judge_==0){
				last[j]=judge+48;
				judge_=0;
			}
		}
		for(i=first-second-1;i>=0;i--){
			if(judge_==0){
				last[i]=fir[i];
				judge_=0;
			}
			else if(judge_==1){
				judge=fir[i]-48+1;
				if(judge>9){
					judge_=1;
					judge=judge%10;
					last[i]=judge+48;
				}
				else{
					judge_=0;
					last[i]=judge+48;
				}
			}
		}
		if(judge_==1){
			printf("1");
		}
		printf("%s\n",last);
	}
	else if(first<second){
		for(i=first-1,j=second-1;i>=0;j--,i--){
			judge=sec[j]-48+fir[i]-48;
			if(judge>9&&judge_==0){
				judge_=1;
				judge=judge%10;
				last[j]=judge+48;
			}
			else if(judge>9&&judge_==1){
				judge=judge+1;
				judge_=1;
				judge=judge%10;
				last[j]=judge+48;
			}
			else if(judge<=9&&judge_==1){
				judge=judge+1;
				if(judge>9){
					judge_=1;
					judge=judge%10;
					last[j]=judge+48;
				}
				else{
					last[j]=judge+48;
					judge_=0;
				}
			}
			else if(judge<=9&&judge_==0){
				last[j]=judge+48;
				judge_=0;
			}
		}
		for(i=-first+second-1;i>=0;i--){
			if(judge_==0){
				last[i]=sec[i];
				judge_=0;
			}
			else if(judge_==1){
				judge=sec[i]-48+1;
				if(judge>9){
					judge_=1;
					judge=judge%10;
					last[i]=judge+48;
				}
				else{
					judge_=0;
					last[i]=judge+48;
				}
			}
		}
		if(judge_==1){
			printf("1");
		}
		printf("%s\n",last);
	}
	else{
		for(i=second-1,j=first-1;i>=0;j--,i--){
			judge=fir[j]-48+sec[i]-48;
			if(judge>9&&judge_==0){
				judge_=1;
				judge=judge%10;
				last[j]=judge+48;
			}
			else if(judge>9&&judge_==1){
				judge=judge+1;
				judge_=1;
				judge=judge%10;
				last[j]=judge+48;
			}
			else if(judge<=9&&judge_==1){
				judge=judge+1;
				if(judge>9){
					judge_=1;
					judge=judge%10;
					last[j]=judge+48;
				}
				else{
					last[j]=judge+48;
					judge_=0;
				}
			}
			else if(judge<=9&&judge_==0){
				last[j]=judge+48;
				judge_=0;
			}
		}
		if(judge_==1){
			printf("1");
		}
		printf("%s\n",last);
	}
}
发布了19 篇原创文章 · 获赞 8 · 访问量 341

猜你喜欢

转载自blog.csdn.net/bupt_sanqing/article/details/104254234
今日推荐