English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

設計一程式:可以輸入16位元數的整數,並將兩數相加
EX:1234567890123456+2345678901234567=3580246791358023
請用C寫!最快寫出來的並正確!我送20點!謝謝囉
PS:要用整數!
謝謝

2006-11-07 14:30:34 · 2 個解答 · 發問者 多ㄏ水 1 in 電腦與網際網路 程式設計

你好!不能執行也!有問題!
請問你是不是有少打地方嗎?
謝謝

2006-11-07 16:45:33 · update #1

2 個解答

給你兩個字串可以直接相加的程式
buf3 = buf1 + buf2
buf1 與 buf2 的值 介於 '0' ~ '9'之間
這個程式亦可讓你修改成N位元兩整數相加

char buf1[17]="1234567890123456" ;
char buf2[17]="2345678901234567" ;
char buf3[17];

int i,,overflow=0;
buf3[16]=0;
for(i=15;i >= 0 ;i--){ /*計算16個位數字最後一位數開始*/
j=(buf1[i]- '0' ) + (buf2[i]-'0') + overflow; /*字元轉成數字再加上進位值*/
if(j > 9) {/*相加的結果有進位*/
buf3[i] = j - 10 + '0';
overflow = 1;/*有進位*/
} else {/*相加的結果無進位*/
buf3[i] = j + '0';
overflow = 0;
}
}
printf("%s + %s = %s \n",buf1,buf2,buf3);

2006-11-07 19:19:00 · answer #1 · answered by 過路人 4 · 0 0

BYTE byNum1[20], byNum2[20], byAnswer[20];
short i, nC;

for (i = 0; i < 16; i ++)
{
byAnswer[i] = 0;
//byNum1[i] <-數字 1放入 (從個位數放起)
//byNum2[i] <-數字 2放入 (從個位數放起)
}
nC = 0;
for (i = 0; i < 16; i ++)
{
byAnswer[i] = byNum1[i] + byNum2[i] + nC;
if (byAnswer[i] >= 10)
{
byAnswer[i] -= 10;
nC = 1;
}
else
nC = 0;
}
//print out 從最高位開始輸出
for (i = 15; i >= 0; i --)
{
//print out
}

2006-11-07 15:52:30 · answer #2 · answered by maria 3 · 0 0

fedest.com, questions and answers