访客只能看到部份内容,免费 加入会员 或由脸书 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"); }