zoukankan      html  css  js  c++  java
  • 大数加法

    大数加法

    两个大数相加,采用数组实现

    分析

    1. 分别用string输入两个大数
    2. 倒置两个数组到int数组中,方便处理相加
    3. 函数add返回值为结果的长度
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    #define MAX 1000
    
    int add(string num1, string num2, int sum[]){ // 接受两个输入string作为长整数
    	int len1 = num1.size();
    	int len2 = num2.size();
    	int len = len1 > len2 ? len1 : len2;
    	int num22[MAX] = {0}; //用来存放的num2
    	for(int i = len1 - 1, j = 0; i >= 0; i--, j++)// 将num1反转,方便加法运算
    		sum[j] = num1[i] - '0';
    
    	for(int i = len2 - 1, j = 0; i >= 0; i--, j++)//// 将num2反转,方便加法运算
    		num22[j] = num2[i] - '0';
    
    	for(int i = 0; i < len; i++){
    		sum[i] += num22[i];
    		if(sum[i] > 9){
    			sum[i] -= 10;
    			sum[i + 1]++;
    		}
    	}
    	if(sum[len] > 0) len++;
    	return len;//返回值为结果的长度
    }
    
    int main(){
    	string num1, num2;
    	int sum[MAX];
    	while(cin >> num1 >> num2){
    		int len = add(num1, num2, sum);
    		//cout << len << endl;
    		cout << "sum is : ";//cout << "====================" << endl;
    		for(int i = len - 1; i >= 0; i--){
    			cout << sum[i];
    		}
    		cout << endl;
    	}
    	return 0;
    
    }
    
    
  • 相关阅读:
    WebService是什么?以及工作原理
    分布锁的问题?
    反射是什么?原理?作用?
    HTTP/1.1与HTTP/1.0的区别
    Ajax的跨域问题(包括解决方案)?
    SVN与Git优缺点比较
    类的加载过程?
    B树, B-树,B+树,和B*树的区别
    Linux常用的50个命令
    权限模型
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10230750.html
Copyright © 2011-2022 走看看