加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相加

发布时间:2020-12-14 01:37:25 所属栏目:大数据 来源:网络整理
导读:#include stdio.h#include stdlib.h#include string.h#define MAX 10000000;//大数相加 void main(){char num1[MAX];char num2[MAX];int length1,length2;while(scanf("%s%s",num1,num2)!=EOF){length1=strlen(num1);length2=strlen(num2);caladd(num1,num2,
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10000000;
//大数相加 
void main(){
	char num1[MAX];
	char num2[MAX];
	int length1,length2;
	while(scanf("%s%s",num1,num2)!=EOF){
		length1=strlen(num1);
		length2=strlen(num2);
		caladd(num1,num2,length1,length2);
	}	
	return 0;
} 

void caladd(char *num1,char *num2,int length1,int length2)
{   
    int result[MAX] = {0},a[MAX] = {0},b[MAX] = {0},c[MAX];
    c[0] = 0;
	if(num1==NULL||num2==NULL)return ;
	if(length1<=0||length2<=0) return ;
	int k = length1>length2?length1:length2;
	//字符串转化为整形
	for(int i=0;i<length1,++i) a[i] = num1[length1-i-1]-'0';
	for(int i=0;i<length2,++i) b[i] = num2[length2-i-1]-'0';
	
	//在看谁的大
	for(int i=0;i<k;++i){
		c[i]+=(a[i]+b[i])%10;//如果a[i]+b[i]<10 那么c[i] = a[i]+b[i]; 
		c[i+1] =(a[i]+b[i])/10;
		if(c[i]!=0)k++;//需要进位 
	}
	
	//倒序输出相加的结果
	for(i=k-1;i>=0;--i){
		printf("%d",c[i]);
	} 
	
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读