帮个忙啊,这个程序如果写成dll该怎么写?
程序代码:
#include<stdio.h> #include<string.h> #define N 1001 int compare(char * c1,int s1,int e1,char *c2,int s2,int e2)/*大整数比较大小*/ { while(c1[s1]=='0'&&s1<e1)s1++; while(c2[s2]=='0'&&s2<e2)s2++; if(e1-s1>e2-s2)return 1; if(e1-s1<e2-s2)return -1; int i1;int f11=0; for(i1=0;i1<=e1-s1;i1++) { if(c1[s1+i1]>c2[s2+i1]){f11=1;break;} if(c2[s2+i1]>c1[s1+i1])break; } if(i1>e1-s1)return 0; if(f11)return 1; return -1; } void sub(char *c1,int l1,char *c2,int n,int l)/*两个大整数相减,结果放在c1中*/ { int fig=0; if(l1>l) { fig=1; int i5; for(i5=l;i5>0;i5--) c2[i5]=c2[i5-1]; c2[0]='0';l++; } int jw=0; int i4; char tc[N]; for(i4=l-1;i4>=0;i4--) { tc[i4]=((c2[i4]-48)*n+jw)%10+48; jw=((c2[i4]-48)*n+jw)/10; } jw=0; for(i4=l-1;i4>=0;i4--) { int ttt=jw; if(c1[i4]-tc[i4]-jw>=0) { tc[i4]=c1[i4]-tc[i4]-jw+48; jw=0; } else { jw=(tc[i4]-c1[i4]+jw); if(jw%10==0)jw/=10; else jw=jw/10+1; tc[i4]=jw*10+c1[i4]-tc[i4]-ttt+48; } } if(fig) { for(i4=0;i4<l-1;i4++)c2[i4]=c2[i4+1]; l--; c2[l]='\0'; } tc[l1]='\0'; for(i4=0;i4<=l1;i4++) c1[i4]=tc[i4]; } void high_precise_division(char *c1,char *c2) { int len1,len2; len1=strlen(c1); len2=strlen(c2); int i,j,k,ip; i=0; while(c1[i]=='0'&&i<len1-1)i++; for(j=0;i<len1;j++,i++)c1[j]=c1[i]; len1=j;c1[j]='\0'; i=0; while(c2[i]=='0'&&i<len2-1)i++; for(j=0;i<len2;j++,i++)c2[j]=c2[i]; len2=j;c2[j]='\0'; /*while(c1[0]=='0'&&i<len1-1) { for(k=0;k<len1-1;k++) c1[k]=c1[k+1]; len1--; }去掉前面的0*/ /*while(c2[0]=='0'&&j<len2-1) { for(k=0;k<len2-1;k++) c2[k]=c2[k+1]; len2--; }去掉前面的0*/ c1[len1]='\0'; c2[len2]='\0'; if(strcmp(c2,"0")==0)return ;/*当除数为0时*/ if(strcmp(c1,"0")==0){strcpy(c2,"0");return ;}/*当被除数为0时*/ if(len1<len2||len1==len2&&compare(c1,0,len1-1,c2,0,len2-1)<0) { strcpy(c2,c1); c1[0]='0';c1[1]='\0'; return ; } else { ip=0; char product[N],*pr;/*部分积*/ pr=product; for(ip=0;ip<len2-1;ip++) pr[ip]=c1[ip]; for(i=0;i<=len1-len2;i++) { pr[ip++]=c1[len2-1+i]; if(ip>=len2&&compare(pr,0,ip-1,c2,0,len2-1)>=0) { char tc[N]; for(j=1;j<=9;j++) { for(k=0;k<ip;k++)tc[k]=pr[k]; sub(tc,ip,c2,j,len2);/*pr-c2*j结果放在pr中*/ for(k=0;tc[k]!='\0';k++); if(compare(tc,0,k-1,c2,0,len2-1)<0) break; } strcpy(pr,tc); ip=strlen(pr); c1[i]=j+48; while(pr[0]=='0'&&ip>1) { for(j=0;j<ip-1;j++) pr[j]=pr[j+1]; ip--; } if(ip==1&&pr[0]=='0')ip--; } else c1[i]='0'; } while(c1[0]=='0') { for(j=0;j<i-1;j++) c1[j]=c1[j+1]; i--; } c1[i]='\0'; if(ip==0){pr[0]='0';pr[1]='\0';ip=1;} else { while(pr[0]=='0'&&ip>1) { for(j=0;j<ip-1;j++)pr[j]=pr[j+1]; ip--; } } for(j=0;j<ip;j++) c2[j]=pr[j]; c2[ip]='\0'; return ; } } int main() { int i,j; char c1[N],c2[N];/*整数高精度除法*/ while(scanf("%s %s",c1,c2)!=EOF) { char *pc1,*pc2; pc1=c1;pc2=c2; c1[strlen(c1)]='\0'; c2[strlen(c2)]='\0'; high_precise_division(pc1,pc2);/*结果放在pC1中,余数放在pC2中*/ printf(" 商:%s\n余数:%s\n",pc1,pc2); } return 0; } 这个程序如果写成dll可以实现吗?或者com 我对c++不熟不会弄.有谁能帮忙吗?