zoukankan      html  css  js  c++  java
  • 面试题17_1:实现两个大数相加

    本题考查大数问题。大数一般用字符串或者数组表示。注意,strlen()函数返回的值是数组''前元素的个数,并不包括''。

    C++版本

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    void printNumber(char number[]){
        bool isBeginning0 = true;
        int nLength = strlen(number);
        for(int i = 0; i < nLength; i++){
            if(isBeginning0 && number[i] != '0')
                isBeginning0 = false;
            if(!isBeginning0)
                printf("%c", number[i]);
        }
        printf("	");
    }
    
    // 实现两个大数相加,结果记入到a[]
    bool addBigInt(char a[], char b[], int arraySize){
        bool isOverFlow = false;
        // 第n个进位
        int nTakeOver = 0;
        for(int i = arraySize-1; i>=0; i--){
            int nSum = (a[i]-'0') + (b[i]-'0') + nTakeOver;
            // 如果产生进位
            if(nSum > 9){
                // 如果是首位产生了进位,那么溢出
                if(i == 0)
                    isOverFlow = true;
                else{
                    a[i] = '0' + nSum - 10;
                    nTakeOver = 1;
                }
            }
            // 如果没有产生进位,这里不会break;
            else{
                a[i] = '0' + nSum;
                nTakeOver = 0;
            }
        }
        return isOverFlow;
    }
    
    int main()
    {
        char a[8] = {'1','6','3','5','3','5','4',''};
        char b[8] = {'0','0','4','3','2','6','3',''};
        cout<<strlen(a)<<endl;
        if(!addBigInt(a, b, strlen(a)))
            printNumber(a);
        return 0;
    }
    
  • 相关阅读:
    Dom之标签增删操作
    Dom实例:数据自增、搜索框及跑马灯
    Dom选择器及操作文本内容
    Tkinter单选框及滚动条
    Tkinter颜色方案举例
    TKinter之窗口美化 窗口大小、图标等
    TKinter之文本域与多窗口
    TKinter之菜单
    JavaScript 基本语法
    TKinter的常用组件
  • 原文地址:https://www.cnblogs.com/flyingrun/p/13361571.html
Copyright © 2011-2022 走看看