疯狂编程,计算2的10万次方
程序代码:
#include "stdio.h" #define M 10000 void main() { unsigned a[M]; //以无符号整形存,每10000为一进位,即数组每个元素最大9999 unsigned long k; //k用来保存每次乘积 int i,j,m,t,n=1,r; //n是数组长度,r是进位 FILE *fp; a[0]=1; printf("\n输入m and t(空格隔开: m^t = ?):"); scanf("%d %d",&m,&t); for(j=0; j<t; j++) { r=0; for(i=0; i<n; i++) { k=a[i]*m+r; a[i]=k%10000; r=k/10000; } while(r>0) { a[n++]=r%10000; r/=10000; } } fp=fopen("c:\\2-100000.txt","w"); printf("\n %d^%d =",m,t); for(i=n-1; i>=0; i--) { if(a[i]<1000&&a[i]>=100&&i!=n-1) fprintf(fp,"%c",'0'); //数据不够4位,前面补0 else if(a[i]<100&&a[i]>=10&&i!=n-1) fprintf(fp,"%s","00"); else if(a[i]<10&&i!=n-1) fprintf(fp,"%s","000"); fprintf(fp,"%d",a[i]); } close(fp); }