版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.設(shè)計(jì)題目: 大整數(shù)的四則運(yùn)算1.功能簡(jiǎn)介:編寫出實(shí)現(xiàn)大整數(shù)之間相加,相減,相乘,相除的程序,并輸出計(jì)算精品文檔放心下載結(jié)構(gòu)。課程設(shè)計(jì)要求:采用模塊化程序設(shè)計(jì)源程序中應(yīng)有足夠的注釋必須上機(jī)調(diào)試通過(guò)注重算法運(yùn)用,優(yōu)化存儲(chǔ)效率與運(yùn)算效率需提交源程序(含有注釋)及相關(guān)文件(數(shù)據(jù)或數(shù)據(jù)庫(kù)文件);感謝閱讀提交設(shè)計(jì)報(bào)告書。2.總體結(jié)構(gòu):.數(shù)據(jù)初判斷運(yùn)算符號(hào)加法 減法 乘法 除法 退出正整數(shù) 非正整 轉(zhuǎn)變?yōu)?轉(zhuǎn)變?yōu)檗D(zhuǎn)變?yōu)榱鞒虉D:..概要設(shè)計(jì):.1)加法運(yùn)算利用兩個(gè)整形數(shù)組分別存放兩個(gè)數(shù)a和b的每一位的數(shù)值,最低位存放符號(hào)。如果a謝謝閱讀和b同號(hào),從最低為開始計(jì)算,如果有進(jìn)位則保存在高一位,本為則減10,然后反序?qū)⒂?jì)感謝閱讀算后的各個(gè)位的數(shù)值保存在一個(gè)數(shù)組c并輸出,如果a和b都是負(fù)數(shù)則在前面要輸出負(fù)號(hào),精品文檔放心下載函數(shù)的返回值為c的位數(shù)。如果a和b異號(hào),也即兩個(gè)正整數(shù)相減,從最低位開始相減,感謝閱讀如果要借位則本位加10再相減,高一位要減1,然后反序?qū)⒂?jì)算后的各個(gè)位的數(shù)值保存在感謝閱讀一個(gè)數(shù)組c并輸出,在前面要輸出相應(yīng)的符號(hào)位。2)減法運(yùn)算可將減法運(yùn)算轉(zhuǎn)化為加法運(yùn)算,只要將被減數(shù)的符號(hào)改變即可。感謝閱讀3)乘法運(yùn)算符號(hào)存放在最低位,將其中一個(gè)數(shù)a的每一位分別乘以另一個(gè)數(shù)b的每一位,并將結(jié)感謝閱讀果保存在數(shù)組c中,然后重復(fù)計(jì)算a的下一位跟b的每一位的乘積,把上一次計(jì)算保存在c謝謝閱讀的值加上本次計(jì)算后的值,并保存在c自身中,直到a的最高位,最后輸出符號(hào)和相應(yīng)的計(jì)精品文檔放心下載算結(jié)果。4)除法運(yùn)算利用乘法和減法,將除數(shù)分別乘以1到9,直到其值大于等于被除數(shù)的對(duì)應(yīng)的數(shù),然后感謝閱讀被除數(shù)對(duì)應(yīng)的數(shù)減去其乘積,保存在一個(gè)數(shù)組中,下一次循環(huán)把它歸到被除數(shù)中繼續(xù)做除法感謝閱讀運(yùn)算,最后得到余數(shù)并輸出。4.函數(shù)功能:voidinit(inta[],intb[],int*p1,int*p2)精品文檔放心下載功能說(shuō)明:讀入所要計(jì)算的數(shù)值,數(shù)據(jù)初始化intplus(inta[],intb[],intc[],intm,intn)精品文檔放心下載4. 功能說(shuō)明:兩個(gè)正整數(shù)相加.voidchange(inta[],intb[],intm,intn)感謝閱讀功能說(shuō)明:當(dāng)兩異號(hào)數(shù)相加時(shí),改變其符號(hào)以符合加法運(yùn)算感謝閱讀intminus(inta[],intb[],intd[],intm,intn)精品文檔放心下載功能說(shuō)明:兩個(gè)正整數(shù)相減voidminusfun(inta[],intb[],intd[],intm,intn)功能說(shuō)明:判斷兩個(gè)異號(hào)數(shù)的相加方式精品文檔放心下載intmulti(inta[],intb[],intc[],intm,intn)謝謝閱讀功能說(shuō)明:兩個(gè)正整數(shù)相乘voidprint(longc[],intflag)精品文檔放心下載功能說(shuō)明:打印帶符號(hào)flag(1為負(fù))的longc[]數(shù)組精品文檔放心下載intwrite(longa[],intflag)謝謝閱讀功能說(shuō)明:將鍵盤敲入的數(shù)字按4位一組放入longa[],且將符號(hào)放入flag感謝閱讀voidmul(longa[],intfirst,intlast,longb[],longc[])功能說(shuō)明:乘法,a的第last到first位乘以b,答案放到c感謝閱讀intcompara(longa[],intfirst,intlast,longb[])謝謝閱讀功能說(shuō)明:比較數(shù)組a,b大小,firstlast分別為a的最高最低位精品文檔放心下載intminusd(longa[],intfirst,intlast,longb[],longc[],intflag)感謝閱讀功能說(shuō)明:a為被減數(shù),firstlast為a最高最低位,b為減數(shù),c為差,flag為符號(hào)感謝閱讀voiddiv(longa[],longb[],longc[],intfa)謝謝閱讀功能說(shuō)明:除法,a除以b的值放入c,fa為a符號(hào)感謝閱讀voidmenu()功能說(shuō)明:打印菜單函數(shù)voidmain().功能說(shuō)明:主函數(shù),調(diào)用其余函數(shù),計(jì)算相應(yīng)功能的值并輸出。感謝閱讀5.源程序:#include<iostream.h>#include<math.h>#include<stdio.h>#defineMAX40 //可以修改,此時(shí)最大運(yùn)算位數(shù)為四十位感謝閱讀#defineN10 //此處應(yīng)為最大位數(shù)除以4感謝閱讀voidinit(inta[],intb[],int*p1,int*p2) //輸入謝謝閱讀{inti,j;charr,s;for(i=0;i<MAX;i++){a[i]=0;b[i]=0;}printf("請(qǐng)輸入處理的第一個(gè)數(shù)的值:");r=getchar();if(r==45){a[0]=r;for(i=1;(r=getchar())!='\n';i++)謝謝閱讀.a[i]=r-48;}else{a[1]=r-48;for(i=2;(r=getchar())!='\n';i++)精品文檔放心下載a[i]=r-48;}*p1=i;printf("請(qǐng)輸入處理的第二個(gè)數(shù)的值:");s=getchar();if(s==45){b[0]=s;for(j=1;(s=getchar())!='\n';j++)謝謝閱讀b[j]=s-48;}else{b[1]=s-48;for(j=2;(s=getchar())!='\n';j++)感謝閱讀b[j]=s-48;}.*p2=j;}intplus(inta[],intb[],intc[],intm,intn) //加法運(yùn)算謝謝閱讀{intd[MAX]={0},i,j,k;for(i=0;i<MAX;i++) c[i]=0;精品文檔放心下載if(a[1]==0){for(i=0;i<n;i++)c[i]=b[i];精品文檔放心下載return(i);}if(b[1]==0){for(i=0;i<m;i++)c[i]=a[i];感謝閱讀return(i);}for(i=m-1,j=n-1,k=1;i>0&&j>0;i--,j--,k++)精品文檔放心下載{d[k]=a[i]+b[j]+d[k];if(d[k]>9){d[k+1]++;d[k]=d[k]-10;}}.while(i>0){d[k]=d[k]+a[i];if(d[k]>9){d[k+1]++;d[k]=d[k]-10;}k++;i--;}while(j>0){d[k]=d[k]+b[j];if(d[k]>9){d[k+1]++;d[k]=d[k]-10;}k++;j--;}d[0]=a[0]+b[0];c[0]=d[0];if(d[k]==0).k--;for(i=1;k>0;i++,k--)c[i]=d[k];return(i);}voidchange(inta[],intb[],intm,intn) //變號(hào)運(yùn)算精品文檔放心下載{inti,j;intc[MAX];if(m<=n&&b[0]==45){for(i=1;i<m;i++)c[i]=a[i];for(i=1,j=1;j<n;i++,j++)a[i]=b[j];for(i=1,j=1;j<n;i++,j++)b[i]=c[j];for(j=i;j<MAX;j++)b[j]=0;return;}if(m>=n&&a[0]==45){.a[0]=0;b[0]=45;return;}}intminus(inta[],intb[],intd[],intm,intn) //減法運(yùn)算精品文檔放心下載{intc[MAX]={0},i,j,k;for(i=0;i<MAX;i++)d[i]=0;for(i=m-1,j=n-1,k=1;i>0&&j>0;i--,j--,k++)感謝閱讀{if(c[k]<0||a[i]<b[j]){c[k]=c[k]+a[i]-b[j];if(c[k]<0){c[k]+=10;c[k+1]--;}}elsec[k]=a[i]-b[j];.}while(i>0){c[k]=c[k]+a[i];if(c[k]<0){c[k]+=10;c[k+1]--;}k++;i--;}c[k]=a[i]+c[k];while(c[k]<=0&&k>0)k--;for(i=1;k>0;i++)d[i]=c[k--];return(i);}voidminusfun(inta[],intb[],intd[],intm,intn) //判斷是否兩異號(hào)數(shù)相加精品文檔放心下載{inti,j,f=0,g=0;if(a[1]==0){.if(b[0]!=0)printf("-");for(i=1;i<n;i++)printf("%d",b[i]);printf("\n");return;}if(b[1]==0){if(a[0]!=0)printf("-");for(i=1;i<m;i++)printf("%d",a[i]);printf("\n");return;}if(m==n){for(i=1;i<m;i++){if((a[i]<b[i]&&b[0]==45)||(a[i]>b[i]&&a[0]==45))精品文檔放心下載g=1;if(a[i]!=b[i])f=1;}.if(f==0){printf("0\n");return;}if(g==1){change(a,b,m,n);printf("-");j=minus(a,b,d,n,m);for(i=1;i<j;i++)printf("%d",d[i]);謝謝閱讀printf("\n");return;}elseif(a[0]==45&&b[0]==0)精品文檔放心下載{j=minus(b,a,d,n,m);for(i=1;i<j;i++)printf("%d",d[i]);printf("\n");return;}else{.j=minus(a,b,d,m,n);for(i=1;i<j;i++)printf("%d",d[i]);printf("\n");return;}}if(m>n&&b[0]==45){j=minus(a,b,d,m,n);for(i=1;i<j;i++)printf("%d",d[i]);精品文檔放心下載printf("\n");return;}if(m<n&&b[0]==45){change(a,b,m,n);printf("-");j=minus(a,b,d,n,m);for(i=1;i<j;i++)printf("%d",d[i]);printf("\n");return;}if(m>n&&a[0]==45).{change(a,b,m,n);printf("-");j=minus(a,b,d,m,n);for(i=1;i<j;i++)printf("%d",d[i]);printf("\n");return;}if(m<n&&a[0]==45){j=minus(b,a,d,n,m);for(i=1;i<j;i++)printf("%d",d[i]);printf("\n");return;}}intmulti(inta[],intb[],intc[],intm,intn) //正整數(shù)乘法運(yùn)算精品文檔放心下載{intd[MAX]={0},e[MAX]={0},i,j,k,r,s,x,y;謝謝閱讀for(i=0;i<MAX;i++).c[i]=0;if(m<=n){for(i=m-1,s=1;i>0;i--,s++)謝謝閱讀{for(r=0;r<MAX;r++){d[r]=0;e[r]=0;}感謝閱讀for(j=n-1,k=1*s;j>0;j--,k++)精品文檔放心下載{d[k]=a[i]*b[j]+d[k];if(d[k]>9){d[k+1]=d[k+1]+d[k]/10;d[k]=d[k]%10;}謝謝閱讀}if(d[k]==0)k--;y=k;for(r=1;k>0;r++,k--)e[r]=d[k];for(r=1;r<MAX;r++)d[r]=e[r];if(s==1)x=plus(c,d,e,0,y+1);elsex=plus(c,d,e,y,y+1);for(r=0;r<MAX;r++).c[r]=e[r];}}elseif(m>n){for(j=n-1,s=1;j>0;j--,s++)感謝閱讀{for(r=0;r<MAX;r++){d[r]=0;e[r]=0;}for(i=m-1,k=1*s;i>0;i--,k++)謝謝閱讀{d[k]=a[i]*b[j]+d[k];if(d[k]>9){d[k+1]=d[k+1]+d[k]/10;d[k]=d[k]%10;}}if(d[k]==0)k--;y=k;.for(r=1;k>0;r++,k--)e[r]=d[k];for(r=1;r<MAX;r++)d[r]=e[r];if(s==1)x=plus(c,d,e,0,y+1);elsex=plus(c,d,e,y,y+1);for(r=0;r<MAX;r++)c[r]=e[r];}}return(x);}voidprint(longc[],intflag) //輸出謝謝閱讀{inti;for(i=N-1;i>=0;i--)if(c[i])break;if(flag)printf("-");.printf("%4d",c[i--]);for(;i>=0;i--){if(c[i]/1000)printf("%4ld",c[i]);elseif(c[i]/100)printf("0%3ld",c[i]);elseif(c[i]/10)printf("00%2ld",c[i]);elseprintf("000%1ld",c[i]);}}intwrite(longa[],intflag) //將鍵盤敲入的數(shù)字按4位一組放入longa[],且將符號(hào)放入謝謝閱讀flag{charnum[N*4];chartemp;inti,j,k;for(i=0;i<N*4;i++){num[i]=getchar();if(num[i]==10).{i--;break;}if(num[i]==45){flag=(flag+1)%2;i--;}}k=0;for(j=0;j<=i/2;j++){temp=num[j];num[j]=num[i-k];num[i-k]=temp;k++;}k=1;for(j=0;j<=i;j++)switch(k){case1:a[j/4]+=(long)(num[j]-48);感謝閱讀.k++;break;case2:a[j/4]+=(long)(num[j]-48)*10;謝謝閱讀k++;break;case3:a[j/4]+=(long)(num[j]-48)*100;謝謝閱讀k++;break;case4:a[j/4]+=(long)(num[j]-48)*1000;精品文檔放心下載k=1;break;}returnflag;}voidmul(longa[],intfirst,intlast,longb[],longc[]) //乘法謝謝閱讀{inti,j;intmax_i;longtemp;for(max_i=N-1;max_i>=0;max_i--)謝謝閱讀if(b[max_i])break;for(i=0;i<=max_i;i++)if(b[i])for(j=first;j<=last;j++){temp=a[j]*b[i];.c[i+j-first]+=temp%10000;c[i+j-first+1]+=((temp/10000)+(c[i+j-first]/10000));謝謝閱讀c[i+j-first]=c[i+j-first]%10000;謝謝閱讀}}intcompara(longa[],intfirst,intlast,longb[]) //比較數(shù)組a,b大小感謝閱讀{intflag=2;inti;intk=0;intlen;for(len=N-1;len>=0;len--)if(b[len])break;if((first-last)>=len){if((first-last)>len)flag=1;elsefor(i=len;i>=0;i--){if(a[first-k]>b[i]){.flag=1;break;}if(a[first-k]<b[i]){flag=0;break;}k++;}}elseflag=0;returnflag;}intminusd(longa[],intfirst,intlast,longb[],longc[],intflag)謝謝閱讀{intnotchange;inti,k=0;intmax;notchange=compara(a,first,last,b);謝謝閱讀if(notchange).{for(i=last;i<=first;i++){if(a[i]<b[k]){a[i]+=10000;a[i+1]--;}c[i]=a[i]-b[k];k++;}}else{flag=(flag+1)%2;for(max=N-1;max>=0;max--)if(b[max])break;for(i=0;i<=max;i++){if(b[i]<a[last+k]){b[i]+=10000;.b[i+1]--;}c[i]=b[i]-a[last+k];k++;}}returnflag;}voiddiv(longa[],longb[],longc[],intfa)//除法精品文檔放心下載{longresult[N+1]={0};intlen_a;intk;inti;printf("\n");print(a,fa);for(len_a=N-1;len_a>=0;len_a--)精品文檔放心下載if(a[len_a])break;k=len_a;while(compara(a,len_a,0,b))感謝閱讀{while(!compara(a,len_a,k,b))謝謝閱讀.k--;c[k]=1;mul(c,k,k,b,result);while(compara(a,len_a,k,result)){謝謝閱讀c[k]++;for(i=N-1;i>=0;i--)result[i]=0;mul(c,k,k,b,result);}c[k]--;for(i=N-1;i>=0;i--)result[i]=0;mul(c,k,k,b,result);minusd(a,len_a,k,result,a,0);感謝閱讀for(i=N-1;i>=0;i--)result[i]=0;for(len_a=N-1;len_a>=0;len_a--)感謝閱讀if(a[len_a])break;k=len_a;}}voidmenu() //菜單.{printf("==================================大整數(shù)計(jì)算器精品文檔放心下載==================================");感謝閱讀printf("1.加法 2.減法 3.乘法 4.除法 0.退出\n");感謝閱讀printf("請(qǐng)從1~4中選擇:");return;}voidmain() //主函數(shù){intflag;intmax;intfa;intfb;longad[N],bd[N],cd[2*N];inta[MAX]={0},b[MAX]={0},c[MAX]={0},d[MAX]={0};謝謝閱讀chars;intm,n,i,j;int*p1,*p2;p1=&m;p2=&n;menu();s=getchar();.getchar();while(1){switch(s){case'0':return;case'1':printf("格式為:a+b\n");init(a,b,p1,p2);if(a[1]==0&&b[1]==0){printf("結(jié)果是:a+b=0\n");break;}if(a[0]==b[0]){j=plus(a,b,c,m,n);printf("結(jié)果是:a+b=");if(c[0]!=0)printf("-");for(i=1;i<j;i++)printf("%d",c[i]);.}else{printf("結(jié)果是:a+b=");minusfun(a,b,d,m,n);}printf("\n");break;case'2':printf("格式為:a-b\n");init(a,b,p1,p2);if(b[0]==0)b[0]=45;elseif(b[0]==45)b[0]=0;if(a[1]==0&&b[1]==0){printf("結(jié)果是:a-b=0\n");break;}if(a[0]==b[0]){j=plus(a,b,c,m,n);.printf("結(jié)果是:a-b=");if(c[0]!=0)printf("-");for(i=1;i<j;i++)printf("%d",c[i]);}else{printf("結(jié)果是:a-b=");minusfun(a,b,d,m,n);}printf("\n");break;case'3':init(a,b,p1,p2);if(a[1]==0||b[1]==0){printf("結(jié)果是:0\n");break;}j=multi(a,b,c,m,n);printf("結(jié)果是:");if((a[0]==45&&b[0]==0)||(b[0]==45&&a[0]==0))謝謝閱讀.printf("-");for(i=1;i<j;i++)printf("%d",c[i]);printf("\n");break;case'4':flag=fa=fb=0;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店管理晉升路徑
- 酒店管理工作目標(biāo)
- All Touch移動(dòng)信息化管理平臺(tái)介紹課件
- 2025-2030全球動(dòng)畫工作室行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)超細(xì)玻璃棉行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球機(jī)器人電子皮膚行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)光伏增效膜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)近紅外(NIR)超透鏡行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)3D感知數(shù)智化解決方案行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球數(shù)字布局軟件行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 食堂項(xiàng)目組織架構(gòu)圖
- 食材配送公司機(jī)構(gòu)設(shè)置及崗位職責(zé)
- 2023年版一級(jí)建造師-水利工程實(shí)務(wù)電子教材
- 房地產(chǎn)工程管理 -中建八局機(jī)電工程質(zhì)量通病治理辦法
- GB/T 6403.4-2008零件倒圓與倒角
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 企業(yè)合規(guī)管理-課件
- 火電廠安全工作規(guī)程
- GB∕T 33047.1-2016 塑料 聚合物熱重法(TG) 第1部分:通則
- 特發(fā)性肺纖維化IPF
- FIDIC國(guó)際合同條款中英文對(duì)照.doc
評(píng)論
0/150
提交評(píng)論