本文目錄一覽:
c語言 利用數組實現加法
我測試過了,含有100這樣帶有0的數字的時候沒有問題,從代碼分析帶0也不會有問題。
至於你說的兩個加數位數不相同出錯。問題出在下面幾行:
for(i=0;(k[i]!=’\0’||b[i]!=’\0′);i++)
{
if(sign==1)
{
j[i]=k[i]+b[i]-95;
sign=0;
}
else
j[i]=k[i]+b[i]-96;
上面的代碼片段。for循環的第二個表達式成立是或關係。如果其中一個加數位數不夠,後面的「-95」和「-96」將多減去一個48,所以由char型轉到int型的時候就出錯了。
建議你使用strlen求一下兩個被加數長度。將位數小的高位用0補齊就行了。
C語言數組相加
1,gets需要判斷是否讀取正確
2,思路:xyz+zyx 即求數字倒序然後相加
int main()
{
char buf[64];
int a = 0, sum = 0;
if(gets(buf) == NULL)
printf(“gets error, %s\n);
a = strlen(buf);
for(int i = 0;a1; –a, ++i)
{
sum = buf[i] + buf[a];
}
printf(sum, %s\n);
return 0;
}
沒編譯你試一下,主要是方法要正確,你的有點亂,得加點注釋要不看起來麻煩
還有 你的:a[strlen(str)]=’\0′;是不是不對,a[strlen(str)-1]=’\0′; ?
c語言大數的加法用數組char指針實現
做大數加法,首先要能保存大整數。C能提供的最大的整數類型也就是long long int了吧,還是有上限。用整數類型這條路不通。所以想到把大整數看作字元串(即char數組),一位數字就是數組的一個元素。數組能有多長?幾萬位不止,應付大數加法很輕鬆。
基本做法就是把兩個加數各自存為字元串。(怎麼把數字轉換成字元?每個數字加’0’就行了。比如 ‘7’就是7+’0’。)然後從個位起逐位加。(加的時候把字元變回數字,’7′-‘0’就是7。)算出來的結果再轉成字元存到第三個數組的相應位里,遇到進位就把上一位加個1,簡單的很。最後第三個字元串就是結果,用puts列印出來就行了。做的時候為了方便可能會把個位存在數組第一位,那樣的話就倒序輸出字元串就行了。
代碼自己寫。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287165.html