c語言整數(shù)加法函數(shù) c語言整數(shù)相加代碼

用c語言實現(xiàn)超長整數(shù)的加法運算

要實現(xiàn)超長整數(shù)的加法運算,可以使用字符串來存儲這些數(shù),然后按位進(jìn)行加法運算。下面是使用C語言實現(xiàn)超長整數(shù)加法的示例代碼:

站在用戶的角度思考問題,與客戶深入溝通,找到饒平網(wǎng)站設(shè)計與饒平網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋饒平地區(qū)。

c

#include stdio.h

#include string.h

#define MAX_LEN 100000

void reverse(char *str) {

int i, j;

char temp;

for (i = 0, j = strlen(str) - 1; i j; i++, j--) {

temp = str[i];

str[i] = str[j];

str[j] = temp;

}

}

void add(char *num1, char *num2, char *result) {

int carry = 0;

int i = 0;

int len1 = strlen(num1);

int len2 = strlen(num2);

reverse(num1);

reverse(num2);

while (i len1 || i len2 || carry != 0) {

int n1 = (i len1) ? (num1[i] - '0') : 0;

int n2 = (i len2) ? (num2[i] - '0') : 0;

int sum = n1 + n2 + carry;

result[i] = (sum % 10) + '0';

carry = sum / 10;

i++;

}

result[i] = '\0';

reverse(result);

}

int main() {

char num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN];

printf("請輸入第一個整數(shù):");

scanf("%s", num1);

printf("請輸入第二個整數(shù):");

scanf("%s", num2);

add(num1, num2, result);

printf("兩個整數(shù)的和為:%s\n", result);

return 0;

}

在上面的代碼中,reverse函數(shù)用于將一個字符串反轉(zhuǎn)。add函數(shù)用于將兩個字符串表示的超長整數(shù)相加,結(jié)果存儲在result字符串中。在add函數(shù)中,我們首先將兩個字符串反轉(zhuǎn),然后按位進(jìn)行加法運算,將結(jié)果存儲在result字符串中。最后,我們將result字符串再次反轉(zhuǎn),以得到正確的結(jié)果。

需要注意的是,在進(jìn)行加法運算時,需要考慮到進(jìn)位的情況。當(dāng)兩個數(shù)的位數(shù)不同時,需要在較短的數(shù)前面補0,以便按位相加。

如何C語言中實現(xiàn)兩個任意大小的整數(shù)的相加

要實現(xiàn)任意大小兩個整數(shù)相加,那么就不能存在溢出情況。所以無法使用任何系統(tǒng)類型,唯一的方式是用數(shù)組模擬整數(shù)存儲,并自行實現(xiàn)加法操作算法。

需要注意以下幾點:

1 大數(shù)如何存儲及輸出;

2 計算時進(jìn)位的處理;

3 兩個計算數(shù)長度不同時的處理;

4 當(dāng)達(dá)到最高位仍有進(jìn)位的處理,即結(jié)果的長度大于任意一個操作數(shù)。

以下是一個比較簡單的代碼:

#include?stdio.h

#include?stdlib.h

char?s[101];

int?sum[101];

int?main()?

{

int?i,?j;

while?(gets(s),?strcmp(s,?"0"))?{//巧妙化解開多少個數(shù)組?算多少個數(shù)的和的局面

j=strlen(s);

for?(i=j-1;?i=0;?--i)?{

sum[j-i-1]+=(s[i]-'0');//s[i]-'0'表示字符數(shù)字轉(zhuǎn)化成int數(shù)字??倒序加到sum中?sum第一個數(shù)是s的最后一個數(shù)的和

}

}

j=101;?while(!sum[j])--j;??//重新賦值j?使j為目前sum的總位數(shù)

for?(i=0;ij;++i)?{???//如果s[i]加成兩位數(shù)?將十位數(shù)加給前一位數(shù)

sum[i+1]+=sum[i]/10;

sum[i]=sum[i]%10;

}

for?(i=j;?i=0;?--i)?{

printf("%d",?sum[i]);

}

}

C語言用字符串實現(xiàn)整數(shù)的加法

這個問題你可以寫兩個小函數(shù)來實現(xiàn) , 一個是atoi()函數(shù),就是把字符串轉(zhuǎn)化成int型,另一個是itoa(),就是把int型的數(shù)字轉(zhuǎn)化成字符串。剛開始時用atoi()把str1,str2轉(zhuǎn)化成整形數(shù),然后相加,再把相加后的結(jié)果用itoa()函數(shù)轉(zhuǎn)化成字符串,再賦值給result。這是個思路,那兩個函數(shù)也不太難,自己嘗試實現(xiàn)一下。

C語言中怎么實現(xiàn)兩個超大整數(shù)的相加減乘除

#include string.h

#include stdio.h

#include stdlib.h

#define N 100

int main(int argc, char const *argv[])

{

char arr[N] = {};

gets(arr);

char brr[N] = {};

gets(brr);

int len1,len2,i = 0,j = 0;

len1 = strlen(arr);

len2 = strlen(brr);

int len = len1len2?len1:len2;

/*? c99之后數(shù)組初始化支持整型表達(dá)式,稱為可變長數(shù)組,但按照c89的標(biāo)準(zhǔn)是不對的

int num1[len]; //將字符串轉(zhuǎn)換成翻轉(zhuǎn)的整型數(shù)組

int num2[len];

*/

int* num1 = (int*)malloc(len*sizeof(int));

int* num2 = (int*)malloc(len*sizeof(int));

for (i = 0; i len; i++)

{

num1[i] = ilen1 ? arr[len1-i-1]-'0':0;

}

for (j = 0; j len; j++)

{

num2[j] = jlen2 ? brr[len2-j-1]-'0':0;

}

//int sum[len]; //定義和數(shù)組

int* sum = (int*)malloc(len*sizeof(int));

int flag=0; //設(shè)進(jìn)位符

for (i = 0; i len; i++)

{

sum[len-1-i] = (num1[i]+num2[i]+flag)%10;

flag = (num1[i]+num2[i]+flag)/10;

}

if (flag == 1) printf("1");? ?//如果最高位有進(jìn)位 則輸出一個1

for (i = 0; i len; i++)

{

printf("%d",sum[i]);

}

printf("\n");

free(num1);

free(num2);

free(sum);

num1 = NULL;

num2 = NULL;

sum = NULL;

return 0;

}

擴(kuò)展資料:

gets()函數(shù)用法

gets是從標(biāo)準(zhǔn)輸入設(shè)備讀字符串函數(shù)。

函數(shù)原型:char*gets(char*str);

功能為:從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結(jié)果存放在buffer指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘\0’空字符,并由此來結(jié)束字符串。

注意:不會判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時不發(fā)生溢出。使用時需要包含stdio.h頭文件

參數(shù)

str為字符串指針,用來存放讀取到的數(shù)據(jù)。

返回值

讀入成功,返回與參數(shù)buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發(fā)生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數(shù)檢查是發(fā)生錯誤還是遇到EOF。

標(biāo)題名稱:c語言整數(shù)加法函數(shù) c語言整數(shù)相加代碼
文章轉(zhuǎn)載:http://muchs.cn/article10/dohocdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)搜索引擎優(yōu)化、云服務(wù)器、網(wǎng)站營銷、面包屑導(dǎo)航、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)