|
Post by huangno1 on Feb 26, 2017 20:34:59 GMT -8
程式說明
C++ 程式語言可以很輕易地計算兩個整數的和,但內建的整數型態有其數值上限。本題我們將以一維陣列來儲存一個整數值,並藉此實現大數加法。本題假設使用者輸入的數值不超過30位數,輸入時會先告知數值有幾位數,接著會依序輸入數字,以空白隔開。輸完兩個大數後,請輸出兩者之和。輸出時數字中間不需再有空白。
題目敘述
輸入範例
4
1 2 3 4
5
9 9 8 7 6
輸出範例
101110
#include <stdio.h>
int main()
{
int x , y , x1 [ 31 ] = { } , y1 [ 31 ] = { } , n [ 31 ] = { } ;
int max = 0 , plus = 0 , i = 0 , j = 0 ;
scanf ( "%d" , &x ) ;
for ( i = x - 1 ; i >= 0 ; i -- )
{
scanf ( "%d" , &x1 [ i ] ) ;
}
scanf ( "%d" , &y ) ;
for ( j = y - 1 ; j >= 0 ; j -- )
{
scanf ( "%d" , &y1 [ j ] ) ;
}
max = ( x > y ? x : y ) ;
for ( int m = 0 ; m <= max ; m ++ )
{
n [ m ] = x1 [ m ] + y1 [ m ] + plus ;
if ( n [ m ] >= 10 )
{
n [ m ] = n [ m ] % 10 ;
plus = 1 ;
}
else
{
plus = 0 ;
}
}
if ( n [ max ] == 0 )
{
for ( i = max - 1 ; i >= 0 ; i -- )
{
printf ( "%d" , n [ i ] ) ;
}
}
else
{
for ( i = max ; i >= 0 ; i -- )
{
printf ( "%d" , n [ i ] ) ;
}
}
return 0;
}
|
|