青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

elva

大數求和

Declaration

  該文為本人原創,如需轉載,請注名原作者和本站地址,但未經本人同意,嚴禁用于商業途徑。

Text

  由于系統硬件的限制,我們無法直接進行大數的求和,但是采取一些存儲方面的技術來解決這個問題。下面通過引入字符數組,并運用小學就學習過的進位求和算法來進行大數的求和運算。這里只實現了大整數的求和,如果需要運用到小數求和里頭,需要改動才行。

Code

/*
 * FILE: lns.c
 * Funciton: Count the sum of two large numbers
 */


/*
 * Author: Wu Zhangjin, <zhangjinw@gmail.com>
 * (c) 2006-11-25 dslab.lzu.edu.cn Lanzhou University
 * License GPL Version 2
 */


#include <stdio.h>        /* standard input/output functions */
#include <string.h>         /* strlen function */
#define MAX_DIGITS 10000    /* define your max digit here */

/**
 * sumof_ln - count the sum of two large numbers
 * @ln_arr: the address of the array which store the two string of larger numbers
 *
 * Description:
 * For the restrictions of the hardware, we can not count the sum of two
 * large numbers directly, but we can use some skills to work it out.
 * This function use a char array to store the large numbers, and then
 * add every char digit with the carry, until the leftmost digit. Notes that
 * if the digit of two numbers is not equal,The left aligned digit should be
 * treated espectically--you should add a carry if it exist on every left digit.
 * And also if the last carry exist,the leftmost digit should be '1'
 *
 * Returns:
 * the address point of the string of sum
 *
 * Notes:
 * you can define the maximum digit of the number by the macro MAX_DIGITS
 */


char* sumof_ln(char ln_arr[2][MAX_DIGITS])
{
    int digit_arr[2], carry, sindex, lindex, i, tmp, align_lindex;
    
    carry = 0;
    digit_arr[0] = strlen(ln_arr[0]);
    digit_arr[1] = strlen(ln_arr[1]);
    sindex = (digit_arr[0] < digit_arr[1])?0:1;
    lindex = 1 - sindex;
    align_lindex = digit_arr[lindex] - digit_arr[sindex];

    for (i = digit_arr[sindex] - 1; i >= 0; i --) {
        tmp = ln_arr[lindex][align_lindex + i] + ln_arr[sindex][i] + carry;
        ln_arr[lindex][align_lindex + i] = tmp - 48 - 10 * (carry = (tmp >= 106?1:0));
    }

    if (digit_arr[0] != digit_arr[1])
    for (i = align_lindex - 1; i >= 0 && carry; i --)    {
        tmp = ln_arr[lindex][i] + carry;
        ln_arr[lindex][i] = tmp - 10 * (carry = (tmp >= 58?1:0));

    }

    if (carry) {
        for (i = digit_arr[lindex] - 1; i >= 0; i --)
            ln_arr[lindex][i+1] = ln_arr[lindex][i];
        ln_arr[lindex][digit_arr[lindex] + 1] = '\0';
        ln_arr[lindex][0] = '1';
    }    

    return ln_arr[lindex];
}

/**
 * main - main function to call function sumof_ln
 * Description:
 * compile and link this c program and input two larger numbers, you can get the sum of them
 *
 * Notes:
 * you cannot input a number whose digit is larger than MAX_DIGITS, but you can change by modifying the macro.
 */


int main(int argc, char *argv[])
{
    char ln_arr[2][MAX_DIGITS];

    printf("Please input two large numbers: \n");
    scanf("%s %s", ln_arr[0], ln_arr[1]);

    printf("The sum is:\n%s\n", sumof_ln( ln_arr ));    
}


Demo

shell> make lns
cc     lns.c   -o lns
shell> ./lns
Please input two large numbers:
9
1
The sum is:
10
shell> ./lns
Please input two large numbers:
999999999999999999999999999999999999999999999999999999999999999999999999999999999
1
The sum is:
1000000000000000000000000000000000000000000000000000000000000000000000000000000000
shell> ./lns
Please input two large numbers:
5644687481748485751785757181534145412178758718715875187687867168716841687186716876841688676
45848587878456465146861787116876871687168418178718718768465167867817617687116761867187187971971971954521278
The sum is:
45848587878456470791549268865362623472925599712864130947223886583692805374983930584028875158688848796209954
shell> ./lns
Please input two large numbers:
144
2546
The sum is:
2690

posted on 2007-08-15 17:54 葉子 閱讀(1257) 評論(0)  編輯 收藏 引用 所屬分類: C\C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合999| 久久精品国产99| 欧美日韩国产精品专区| 亚洲青色在线| 亚洲国产精品一区制服丝袜| 久久久久久综合| 亚洲国产日韩在线| 亚洲电影自拍| 欧美日韩福利在线观看| 亚洲一区二区三区午夜| 亚洲视频一二| 狠狠综合久久av一区二区小说| 久久人人九九| 欧美成人四级电影| 亚洲一区欧美二区| 午夜欧美精品| 亚洲精品你懂的| 国产精品99久久久久久宅男| 国产午夜精品美女毛片视频| 美女脱光内衣内裤视频久久网站| 欧美大片在线影院| 亚洲一区二区三区在线观看视频 | 久久精品一区二区三区不卡牛牛| 久久精品人人做人人爽电影蜜月| 亚洲人永久免费| 亚洲天天影视| 亚洲电影专区| 9人人澡人人爽人人精品| 国产一区二区观看| 亚洲精品中文字幕有码专区| 国产欧美欧美| 日韩视频欧美视频| 国产在线观看一区| 亚洲二区视频在线| 国产亚洲精品久久久| 亚洲欧洲免费视频| 国产综合色产| 一区二区三区欧美激情| 在线视频国产日韩| 亚洲欧美视频一区二区三区| 亚洲日韩第九十九页| 午夜久久福利| 亚洲自拍偷拍色片视频| 老**午夜毛片一区二区三区| 欧美一区二区视频网站| 欧美日韩国产不卡在线看| 久久人人爽人人| 国产精品美女www爽爽爽| 亚洲成人资源网| 在线播放一区| 香蕉国产精品偷在线观看不卡| 亚洲天堂成人在线视频| 欧美激情精品久久久久久黑人| 久久久国产成人精品| 国产精品国产一区二区| 欧美顶级少妇做爰| 极品日韩av| 久久精品视频99| 欧美在线|欧美| 国产精品区二区三区日本| 亚洲乱码国产乱码精品精可以看| 亚洲黄色小视频| 麻豆成人综合网| 免费看成人av| 亚洲电影免费在线| 久久亚洲精品一区| 女女同性精品视频| 在线欧美不卡| 久久综合国产精品台湾中文娱乐网| 久久久综合激的五月天| 国产一区二区三区黄| 性欧美18~19sex高清播放| 欧美一区二区啪啪| 国产日韩欧美三区| 久久精品论坛| 欧美肥婆在线| 99re66热这里只有精品3直播| 欧美福利电影网| 夜夜夜久久久| 欧美在线视频一区二区| 国产亚洲一本大道中文在线| 久久国产精品久久w女人spa| 免费观看在线综合色| 91久久精品视频| 欧美涩涩网站| 亚洲欧美在线网| 久久综合给合| 亚洲国产日韩欧美在线动漫| 欧美精品三级在线观看| 一区二区三区四区五区在线| 亚洲欧美在线视频观看| 国产综合视频在线观看| 欧美成人嫩草网站| 亚洲一区二区三区午夜| 久久在线免费| 亚洲一区影院| 国内揄拍国内精品少妇国语| 欧美777四色影视在线| 亚洲网站在线观看| 欧美成人激情视频| 亚洲社区在线观看| 国内精品模特av私拍在线观看| 久久久亚洲影院你懂的| 99视频精品免费观看| 久久精品国产精品亚洲| 日韩视频免费大全中文字幕| 国产精品午夜久久| 欧美不卡高清| 久久er精品视频| 亚洲美女视频网| 老牛国产精品一区的观看方式| 亚洲精品综合精品自拍| 国产一区二区三区精品久久久| 欧美激情一区二区三区在线| 欧美一区二区三区免费在线看| 欧美国产综合一区二区| 欧美一区二区视频97| 99国产欧美久久久精品| 精品av久久707| 国产精品日韩欧美综合| 欧美国产日本在线| 久久精品视频免费| 亚洲欧美日韩一区二区在线| 91久久精品国产91久久| 裸体歌舞表演一区二区| 校园春色综合网| 在线亚洲激情| 亚洲国产小视频| 在线电影院国产精品| 国产精品腿扒开做爽爽爽挤奶网站| 欧美jizzhd精品欧美喷水| 久久久国产精品一区| 香蕉久久夜色精品| 亚洲一二区在线| 一区二区三区久久久| 亚洲免费久久| 亚洲日本理论电影| 亚洲激情六月丁香| 欧美黄免费看| 欧美激情按摩| 欧美激情久久久久久| 欧美va亚洲va香蕉在线| 久久青草欧美一区二区三区| 欧美制服丝袜| 久久精品一区二区| 久久久综合网站| 久久综合中文| 欧美成人一区二免费视频软件| 久久综合影视| 欧美国产日韩精品| 欧美不卡一区| 亚洲黄网站黄| 日韩亚洲不卡在线| 亚洲一级在线观看| 性欧美超级视频| 欧美一级理论性理论a| 性色av一区二区三区| 欧美在线播放视频| 久久久亚洲高清| 免费在线观看精品| 欧美日韩国产999| 国产精品久久久久影院色老大| 国产精品你懂的| 国产在线不卡视频| 亚洲人精品午夜在线观看| 日韩一区二区福利| 亚洲欧美日本精品| 久久婷婷蜜乳一本欲蜜臀| 欧美成人dvd在线视频| 亚洲国产另类精品专区| 在线视频欧美精品| 欧美在线欧美在线| 免费看av成人| 国产精品久久激情| 伊人狠狠色j香婷婷综合| 亚洲欧洲一区二区在线播放| 中文在线一区| 久久久精品国产免大香伊| 欧美福利视频在线观看| 日韩小视频在线观看专区| 欧美一区二区视频在线观看2020| 久久综合伊人77777蜜臀| 欧美日本一区二区视频在线观看| 国产精品青草久久久久福利99| 亚洲第一在线视频| 午夜亚洲性色视频| 欧美激情片在线观看| 亚洲欧美日韩久久精品| 免费观看国产成人| 国产精品永久免费视频| 99riav国产精品| 久久久天天操| 一本色道久久综合狠狠躁篇的优点| 久久精品天堂| 国产精品久久综合| 亚洲日本va午夜在线影院| 欧美一区二区三区电影在线观看| 欧美激情一区二区三区在线| 翔田千里一区二区| 国产精品成人aaaaa网站|