下面的**是我自己想出來的,可能有點麻煩
# include # include # define max 5005
int num1[max];
int num2[max];
int sum[max];
int main(void)
} for (i = 0; i < len2; i ++)
}int pos = flag1 > flag2 ? flag1 - flag2 : flag2 - flag1;
/*以小數點為中心,進行對齊*/
if (flag1 > flag2)
}for (i = len2 - 1, j = pos; i >= 0; i --)
}} else
}for (i = len1 - 1, j = pos; i >= 0; i --)
}} /*
for (i = 0; i < len1; i++)
printf("\n");
for (i = 0; i < len2; i++)
printf("\n");
*/int c = 0;
int s = 0;
for (i = 0; i <= len1 + len2; i++)
for (i = len1 + len2 + 1; i >= 0; i--)
}for (j = 0; j < len1 + len2 + 1; j ++)
}// printf("i = %d\n", i);
// printf("j = %d\n", j);
if (i == -1)
int flag = flag1 > flag2 ? flag1 : flag2;
// printf("flag = %d\n", flag);
/*以下是判斷小數點的輸出位置以及是否需要輸出小數點*/
if (flag == 0)
printf("\n");
} else
printf("\n");
}else if (flag == i)
printf("\n");
}else
}else
printf(".");
for (i = flag-1; i >= j; i--)
printf("\n");
}else if (flag == j)
printf("\n");
}else
printf("\n");}}
} }return 0;
}
高精度加法 大數相加
問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。演算法描述 由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。定義乙個陣列a,a 0 用於儲存a的個位,a 1 用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。計算c ...
大數相加 陣列 高精度
問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。演算法描述 由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。定義乙個陣列a,a 0 用於儲存a的個位,a 1 用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。計算c ...
大數相乘「高精度乘低精度」和「高精度乘高精度」
二 高精度乘高精度 如下 由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較...