#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 200
//用來計算bigint中第一個不為零的數字(最高位)的位置(下標)
int mark_bigint(int bigint[])
{
int mark;
for (mark = MAXSIZE-1; mark >= 0; mark--)
{
if (bigint[mark] == 0) break;
}
return mark;
}
int main(void)
{
int bigint1[MAXSIZE] = {0,0,9,8,7,6,5,4,3,2,1};
//用來存放大整數1的整型陣列,這個大整數值為:12345678900
int bigint2[MAXSIZE] = {6,7,1,2,9,8,9,6,8,2,7,8,9,1,2};
//用來存放大整數2的整型陣列,這個大整數值為:219872869892176
int bigint3[MAXSIZE+1] ;
//用來存放大整數運算結果的整型陣列
int k,i,mark1,mark2,mark3,mark;
mark1=mark_bigint(bigint1);
//計算bigint1中第一個不為零的數字(最高位)所在的下標
mark2=mark_bigint(bigint2);
//計算bigint2中第一個不為零的數字(最高位)所在的下標
mark=mark1>mark2?mark1:mark2;
//取位數長的那個大整數的最高位的下標
k = 0;
while (k <= mark) //將大整數從低位到高位依次相加
{
bigint3[k]=bigint3[k]+ bigint1[k]+ bigint2[k];
if (bigint3[k] > 10) //進位處理
{
bigint3[k+1]++;
bigint3[k] = bigint3[k] - 10;
}
k++;
}
mark3 = mark_bigint(bigint3);
//計算bigint3中第一個不為零的數字(最高位)所在的下標
printf("相加結果為:\n");
for (i = MAXSIZE-1; i >= 0; i--) //輸出相加結果
printf("%d", bigint3[i]);
putchar('\n');
return 0;
}
uj5u.com熱心網友回復:
都沒說是什么錯...轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198877.html
標籤:C語言
上一篇:c++中virtual作用
