1. 程式人生 > 其它 >[譯]C# 7系列,Part 8: in Parameters in引數

[譯]C# 7系列,Part 8: in Parameters in引數

  1. 問題描述:

輸入兩個整數ab,輸出這兩個整數的和。ab都不超過100位。

  1. 演算法描述:
    由於ab都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。
      定義一個數組AA[0]用於儲存a的個位,A[1]用於儲存a的十位,依此類推。同樣可以用一個數組B來儲存b
      計算c=a+b的時候,首先將A[0]與B[0]相加,如果有進位產生,則把進位(即和的十位數)存入r,把和的個位數存入C[0],即C[0]等於(A[0]+B[0])%10。然後計算A[1]與B[1]相加,這時還應將低位進上來的值r也加起來,即C[1]應該是A[1]、B[1]和r三個數的和.如果又有進位產生,則仍可將新的進位存入到r
    中,和的個位存到C[1]中。依此類推,即可求出C的所有位。
      最後將C輸出即可。
  2. 輸入:
    輸入包括兩行,兩個整數都不超過100位,兩數的最高位都不是0。
  3. 程式碼:
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 using namespace std;
     5 #define max 200
     6 #define man 500
     7 
     8 int main()
     9 {
    10     char a[max];
    11     char b[max];
    12     int c[man];
    
    13 cin >> a >> b; 14 int lena = strlen(a); 15 int lenb = strlen(b); 16 int i, j; 17 int r = 0, k = 0; 18 for (i = lena - 1, j = lenb - 1; (i >= 0 && j >= 0); i--, j--) 19 { 20 int p =( a[i] - '0') +( b[j] - '0') + r; 21 r = p / 10; 22 c[k] = p % 10
    ; 23 k++; 24 } 25 while (i >= 0)//b陣列已經加完 26 { 27 int p =( a[i] - '0') + r; 28 r = p / 10; 29 c[k] = p % 10; 30 k++; 31 i--; 32 } 33 while (j >= 0)//a陣列已經加完 34 { 35 int p =( b[j] - '0') + r; 36 r = p / 10; 37 c[k] = p % 10; 38 k++; 39 j--; 40 } 41 42 if (r) //判斷最高位 43 { 44 c[k] = r; 45 k++; 46 } 47 for (i = k - 1; i >= 0; i--) 48 { 49 cout << c[i]; 50 } 51 return 0; 52 }