訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容
人要活在當下....才是最幸福的!!!
延伸:我如果沒記錯的話...好像指標的MAX範圍好像道255唷..如果你的位數又要超過255這時候要怎麼半呢,我提供一下我上課聽到的東西,就是當你超過255那麼大的位數,好比幾萬位幾萬位相加減或,相乘那是不是電腦根本沒辦法運算...所以你可以運用255進位的方法來寫..就是把它當作是一個BYTE...這樣就可以表達很大很大的數目....其實這個方法我也不會寫,只是知道大概的觀念。會的人可以指正一下唷....
沒東西可以抓
#include <stdio.h> #include <iostream.h> #define m 2 #define n 2 void main() { int a[m]={5,1}; int b[n]={0,3}; int c[m+n]; int temp; int i,j,k; for(k=0;k<m+n;k++) c[k]=0; //主要演算法的部分 for(j=0;j<n;j++) { for(i=0;i<m;i++) { temp= a[ i ]*b[j]+c[i+j]; c[i+j]=temp%10; c[i+j+1]+=(temp/10); } } //列印答案 for(k=m+n-1;k>=0;k--) printf("%d",c[k]); }
#include<stdio.h> #include<stdlib.h> #include<time.h> void main(void) { srand(time(0)); char a[3]; char b[3]; char c[6]; char carry[6]; int i,j,k,l; int temp=0; srand((unsigned)(time(NULL))); for(i=0;i<3;i++) { a[i]=rand()%10+0x30; b[i]=rand()%10+0x30; } while(a[2]==Ɔ') { a[2]=rand()%10+0x30; } while(b[2]==Ɔ') b[2]=rand()%10+0x30; for(j=0;i<3;i++) { for(k=0;k<=j;k++) { temp+=(b[k]-0x30)*(a[j-k]-0x30); } carry[j]=((temp-0x30)/10)+0x30; c[j]=((temp+(carry[j]-0x30))%(10*((temp+(carry[j]-0x30))/10)))+0x30; } for(l=2;l>=0;l--) printf("%c",a[i]); printf("\n"); for(l=2;l>=0;l--) printf("%c",b[i]); printf("\n"); for(l=5;l>=0;l--) printf("%c",c[i]); }
下面是引用Chiunyao於2005-04-9 12:39發表的 :挖挖我懂了.....原來是這樣,我一直想我的演算法應該是沒有錯誤怎麼跑不出來...原來是轉換的問題....我在想想怎麼改...謝謝妳啦
#include <stdio.h> #include<stdlib.h> #include<time.h> void main() { srand(time(0)); char a[3]; char b[3]; char c[6]; int i,j,k,carry; int temp; srand((unsigned)(time(NULL))); for(i=0;i<3;i++) { a[i]=rand()%10+0x30; b[i]=rand()%10+0x30; } while(a[2]==Ɔ') { a[2]=rand()%10+0x30; } while(b[2]==Ɔ') { b[2]=rand()%10+0x30; } //主要演算法的部分 for(j=0;j<3;j++) { for(i=0;i<3;i++) { temp=((a[i]-0x30)*(b[j]-0x30))+(c[i+j]-0x30); c[i+j]=(temp%10)+0x30; c[i+j+1]+=((temp/10)+0x30); } } //列印答案 for(i=2;i>=0;i--) printf("%c",a[i]); printf("\n"); for(i=2;i>=0;i--) printf("%c",b[i]); printf("\n"); for(i=5;i>=0;i--) printf("%c",c[i]); printf("\n"); }