把長度小,數值小的值作為減數,然後取反加入到被減數中,遍歷被減數,遇到負數就加10,同時前一位減1
#include#include#define max 1000 // 大數的最大位數 /*
大數減法
引數:
num1為被減數,用字元陣列儲存
num2為減數
sum陣列儲存相減的結果 即:num1-num2=sum
返回值:返回陣列sum的有效長度,即計算結果的位數
*/int subtraction(char num1, char num2, int sum)
; int len1 = strlen(num1); // 計算陣列num1的長度,即大數的位數
int len2 = strlen(num2); // 計算陣列num2的長度,即大數的位數
// 在進行減法之前要進行一些預處理
blag = 0; // 為0表示結果是正整數,為1表示結果是負整數
if(len1 < len2) // 如果被減數字數小於減數
else if(len1 ==len2) // 如果被減數的位數等於減數的位數
else} }
len = len1>len2 ? len1 : len2; // 獲取較大的位數
//將num1字元陣列的數字轉換為整型數且逆向儲存在整型陣列sum中,即低位在前,高位在後
for (i = len1-1, j = 0; i >= 0; i--, j++)
sum[j] = num1[i] - '0';
// 轉換第二個數
for (i = len2-1, j = 0; i >= 0; i--, j++)
n2[j] = num2[i] - '0';
// 將兩個大數相減
for (i = 0; i <= len; i++)
}// 計算結果長度
for (i = len1-1; i>=0 && sum[i] == 0; i--)
return len; // 返回結果的位數
}int main()
; // 存放計算的結果,低位在前,高位在後,即sum[0]是低位
char num1 = "987654321987654321"; // 第乙個大數
char num2 = "123456789123456789"; // 第二個大數
len = subtraction(num1, num2, sum); // 兩數相減
// 輸出結果
printf("%s\n -\n%s\n =\n", num1, num2);
if(sum[i=len-1] < 0) // 根據高位是否是-1判斷是否是負數
for (; i >= 0; i--)
printf("%d", sum[i]);
printf("\n");
return 0;
}
連線兩個字串
include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...
交換兩個字串
交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...
兩個字串相乘
先附上一張演算法圖 解釋 123 456 首先拿出1和456相乘,儲存到陣列1 2 3 的位置,然後拿出2和456相乘2 3 4的位置,依次類推,直到第乙個字串遍歷完 然後將他們相加,依次存到陣列中 實現如下 int j 0 int resindex 0 for int i 0 i然後再考慮進製,需...