大整數乘法c語言代碼注釋,大整數加法C語言

本文目錄一覽:

c語言 大整數乘法

#include stdio.h

#includestring.h

int main()

{

int i,j,k=0;

char a[201]=”0″,b[201]=”0″,c[401]=”0″; //這裡將c[0]設為『0』,影響到下面輸入

scanf(“%s%s”,a,b);

for (i=0;i=strlen(a)-1;i++)

for (j=0;j=strlen(b)-1;j++)

{c[i+j+1]+=(a[i]-‘0’)*(b[j]-‘0’);}

k=(strlen(a)+strlen(b)-1);

for (;k=1;k–)

{

c[k-1]+=c[k]/10;

c[k]=c[k]%10; //這一步會將c[k]破壞,所以倒轉

}

if(c[0]!=’0′) //若最高位為0,則不輸出;

printf(“%c”,c[0]);

j=strlen(a)+strlen(b);

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

{

printf(“%d”,c[i]);

}

return 0;

}

======================================

系統報錯的原因是c[1]是char型,不是字符串數組,要用%c而是%s,我想你是把i寫成了1了

c語言大整數乘法

dc這個函數裏面連b這個參數都沒有使用,這也能出結果…,

if(z[0]=’0′)continue 也寫錯了

不是打擊你,你的代碼太濫了,實在不想去找錯誤,給你我以前寫的代碼吧,你自己整理一下

#include stdio.h

int mulx(char * a,int b,char * r,int d);

void init(char * s);

char buf1[4*1024];

char buf2[4*1024];

char buf3[4*1024];

int main()

{

char * a;

char * b;

char * r;

char * t;

int d;

int i;

a = buf1;

b = buf2;

r = buf3;

init(NULL);

while(scanf(“%s %d”,a,d)!=EOF)

{

mulx(a,d,r,10);

printf(“%s\n”,r);

}

return 0;

}

char c2d[256]; //字符轉換成數字

char * charset; //代表數字的字符

/*功能:設置使用那些字符表示數字,默認的為”0123456789ABCDEF”*/

/*參數:*/

/*返回值:*/

void init(char * s)

{

int i;

if(s==NULL)

charset = “0123456789ABCDEF”;

else

charset = s;

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

c2d[i] = 0;

for(i=0;charset[i];i++)

c2d[charset[i]] = i;

}

/*功能:清除前導零*/

/*參數:需要清楚的數字*/

/*返回值:清零後數字的位數*/

int clearZeros(char * a)

{

int i,j;

for(i=0;a[i]==charset[0];i++);

for(j=0;a[i];i++,j++)

a[j] = a[i];

a[j] = 0;

if(j==0)

{

a[j++] = charset[0];

a[j] = 0;

}

return j;

}

/*功能:乘,用於進制轉換之類*/

/*參數:a 和 b 分別為乘數,結果保存到 r , d 為使用的進制*/

/*注意:r 可以等於 a , b一定要小於d, 如果被乘數有前導0 則結果也會有前導0*/

/*返回值:結果的位數*/

int mulx(char * a,int b,char * r,int d)

{

int i,j,k,len;

int c,t;

if(r==NULL)

r = a;

for(i=0;a[i];i++);

len = k = i;

for(c=0,i–,r[k–]=0;i=0 ;i–,k–)

{

t = c2d[a[i]] * b + c ;

c = t/d;

r[k] = charset[t%d];

}

if(c)

{

for(i=len,j=++len;i=0;i–,j–)

r[j] = r[i];

r[0]=charset[c];

}

return len;

}

C語言 大整數乘法 求代碼

#include stdio.h #include string.h #define Maxline 300 void main() { void mul(char str1[],char str2[]); char str1[Maxline],str2[Maxline]; scanf(“%s%s”,str1,str2); mul(str1,str2); } void mul(char str1[],char str2[]) { int i,j,length1,length2,tag; int num1[Maxline],num2[Maxline],num3[Maxline]; length1=strlen(str1); length2=strlen(str2); for(i=0;iMaxline;i++) { num1[i]=0; num2[i]=0; num3[i]=0; } j=0; for(i=length1-1;i=0;i–) { num1[j]=str1[i]-‘0’; j++; } j=0; for(i=length2-1;i=0;i–) { num2[j]=str2[i]-‘0’; j++; } for(j=0;jlength2;j++) for(i=0;ilength1;i++) { num3[i+j]+=num1[i]*num2[j]; while(num3[i+j]=10) { num3[i+j]-=10; num3[i+j+1]++; } } for(i=Maxline-1;i=0;i–) { if(num3[i]!=0) { tag=i; break; } } for(i=tag;i=0;i–) { printf(“%d”,num3[i]); } printf(“\n”); }

c語言大整數的乘法

nums[]為指針變量數組

nums[i]=j僅能表示將nums[i]存儲的地址改為了j

若想修改其值,需加*,即*nums[i]=j;

或nums[i]=j;

你的程序里貌似很多地方這個都弄反了,改正後應該就沒有問題了…

原創文章,作者:WECG,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/133854.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WECG的頭像WECG
上一篇 2024-10-04 00:02
下一篇 2024-10-04 00:02

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 如何輸入三個整數,並輸出最大值Python

    對於初學者來說,輸入三個整數並輸出它們的最大值可能是一個比較基礎的問題。然而,它卻包含了Python中許多基本知識點的應用,因此學習它可以讓我們更好地理解Python編程語言。 一…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python隨機生成100內的10個整數

    本文將從以下幾個方面詳細闡述Python隨機生成100內的10個整數: 一、random庫介紹 在Python中,生成隨機數可以使用random庫。random庫包括兩種類型的函數…

    編程 2025-04-29
  • 全能編程開發工程師必備技能——如何優化大整數的計算

    本文將會為你分享如何解決大整數計算問題,以9999999967為例,我們將從多個方面對其做詳細闡述,並給出完整的代碼示例。 一、大整數的表示方法 在計算機中,我們通常採用二進制數來…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 整數的因子包含自身嗎

    本篇文章將從數學概念的角度、常用算法的應用、程序實現的方法等多個方面,對整數的因子包含自身的問題進行詳細闡述。 一、質因數分解法 將整數進行質因數分解,若分解結果中所有質因子的指數…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28

發表回復

登錄後才能評論