真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言大數(shù)相加函數(shù) c語言大數(shù)相加函數(shù)怎么表示

C 語言 大數(shù)相加

這個只能用字符串來解決

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比羅平網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式羅平網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋羅平地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

void fx(char *x,int n)

{

char *p1=x,*p2=x+n; //這個可能控制不好,也就是1個位置的誤差,自己調(diào)整一下吧

char t;

while(p1p2)

{t=*p1;*p1=*p2;*p2=t;p1++;p2++;}

}

main()

{

char a[100],b[100];

int c[100],d[100];e[101]={0};

int l1,l2,l3;

int i,n=100;

gets(a);

gets(b); //輸入a,b??梢詭rintf標(biāo)示輸入這兩個數(shù),隨你

//反序a,b,這個可以做個子函數(shù),

l1=strlen(a);

fx(a,l1);

l2=strlen(b);

fx(b,l2);

for(i=0;il1;i++) //轉(zhuǎn)換成整數(shù)

c[i]=a[i]-'0';

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

d[i]=b[i]-'0';

l3=l1l2?l1:l2;

e[0]=c[0]+d[0];

for(i=1;il3;i++)

{

e[i]=c[i]+d[i]+e[i-1]/10; //加上前一位的進位

e[i-1]%=10; //把前一位弄成個位數(shù)

}

//處理最高位

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

e[i]%=10;

//反序輸出就可以了,可以處理一下高位余下的零

while(!e[n])

n--;

for(i=n;i=0;i--)

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

}

基本思路就是這樣,我沒有運行,可能有些小錯誤,自己解決一下吧

c語言 大數(shù)相加

c/c++中int和unsigned類型變量,都不能保存超過10位的整數(shù),但有時我們需要計算位數(shù)非常長的整數(shù)或小數(shù)的加法。一般我們稱這種基本數(shù)據(jù)類型無法表示的整數(shù)為大整數(shù)。如何表示和存放大整數(shù)呢?基本的思想就是:用數(shù)組存放和表示大整數(shù)。一個數(shù)組元素,存放大整數(shù)中的一位。

現(xiàn)在假如我們要計算倆個200位數(shù)的加法。顯然,任何C/C++固有類型的變量都無法保存它。最直觀的想法是可以用一個字符串來保存它。字符串本質(zhì)上就是一個字符數(shù)組,因此為了編程更方便,我們也可以用數(shù)組int an[200]來保存一個200 位的整數(shù),讓an[0]存放個位數(shù),an[1]存放十位數(shù),an[2]存放百位數(shù)……那么如何實現(xiàn)兩個大整數(shù)相加呢?方法很簡單,就是模擬小學(xué)生列豎式做加法,從個位開始逐位相加,超過或達到10 則進位。也就是說,用int?an1[201]保存第一個數(shù),用int an2[200]表示第二個數(shù),然后逐位相加,相加的結(jié)果直接存放在an1 中。要注意處理進位。另外,an1 數(shù)組長度定為201,是因為兩個200 位整數(shù)相加,結(jié)果可能會有201 位。實際編程時,不一定要費心思去把數(shù)組大小定得正好合適,稍微開大點也無所謂,以免不小心沒有算準(zhǔn)這個“正好合適”的數(shù)值,而導(dǎo)致數(shù)組小了,產(chǎn)生越界錯誤。

下面是具體程序:

#includestdio.h

#includestring.h

#defineMAX_LEN?200

int?an1[MAX_LEN+10];

int?an2[MAX_LEN+10];

charszLine1[MAX_LEN+10];

charszLine2[MAX_LEN+10];

int?main(void)

{

scanf("%s",?szLine1);

scanf("%s",?szLine2);

inti,?j;

memset(?an1,?0,?sizeof(an1));

memset(?an2,?0,?sizeof(an2));

int?nLen1?=?strlen(?szLine1);

for(?j?=?0,?i?=?nLen1?-?1;i?=?0?;?i--)

an1[j++]?=?szLine1[i]-?'0';

int?nLen2?=?strlen(szLine2);

for(?j?=?0,?i?=?nLen2?-?1;i?=?0?;?i--)

an2[j++]?=?szLine2[i]-?'0';

for(?i?=?0;i??MAX_LEN?;?i++?)?

{?an1[i]+=?an2[i];//逐位相加

if(?an1[i]?=?10?)?

{?//看是否要進位

an1[i]?-=?10;

an1[i+1]?++;?//進位

}

}

for(?i?=?MAX_LEN;?(i=?0)??(an1[i]?==?0);?i--?)?;

if(i=0)

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

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

else?????printf("0");

return?0;

}

C語言大數(shù)相加,在線等,急

效果:

代碼:

#includestdio.h

#includestring.h

void?reverse(char?s[])?{

int?len?=?strlen(s),?h?=?len?/?2;

char?temp;

for?(int?i?=?0;?i??h;?++i)?{

temp?=?s[i];

s[i]?=?s[len?-?i?-?1];

s[len?-?i?-?1]?=?temp;

}

}

#define?System?10

#define?MAX?24

const?char?mx?=?'9';

const?char?mn?=?'0';

char*?Sum(char?s1[],?char?s2[])?{

char?ans[MAX];

int?len1?=?strlen(s1),?len2?=?strlen(s2),?ad?=?0,?min?=?len1??len2???len1?:?len2,?max?=?len1len2???len1?:?len2,?i;

char*?st1,?*st2;

if?(len1??len2)?{?st1?=?s2;?st2?=?s1;?}

else?{?st1?=?s1;?st2?=?s2;?}

reverse(st1);

reverse(st2);

for?(i?=?0;?i??min;?i++)?{

ans[i]?=?st1[i]?+?st2[i]?-?'0'?+?ad;

if?(ans[i]??mx)?{

ans[i]?-=?System;

ad?=?1;

}

else?ad?=?0;

}

while?(ad?!=?0?||?i?max)?{

if?(i??max)ans[i]?=?st2[i]?+?ad;

else?ans[i]?=?mn?+?ad;

if?(ans[i]??mx)?{

ans[i]?-=?System;

ad?=?1;

}

else?ad?=?0;

i++;

}

ans[i]?=?'\0';

reverse(ans);

return?ans;

}

int?main()?{

char?A[21],?B[21],?C[50],?*ans;

int?n,?m;

scanf("%d?%d",?m,?n);

scanf("%s?%s",?A,?B);

ans?=?Sum(A,?B);

strcpy(C,?ans);

printf("%s\n",?C);

}


本文標(biāo)題:c語言大數(shù)相加函數(shù) c語言大數(shù)相加函數(shù)怎么表示
URL鏈接:http://weahome.cn/article/ddcdihd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部