问题:
大整数乘法
#include<stdio.h>
#include<string.h>
int main(){
char s1[101];//第一个算子
char s2[101];//第二个算子
long long s3[10000]={0,};//初始化为0,存储结果,倒序
scanf("%s%s",s1,s2);
if(s1[0]=='0'||s2[0]==0){//特殊情况
printf("0");
}else{
int l2=strlen(s2);//为找最高位提供参数
int l1=strlen(s1);
int i,j,base,k;//base为进位,下一次要从下一位开始存储
for(i=l2-1,base=0;i>=0;i--,base++){
for(j=l1-1;j>=0;j--){//s3 1 begin
s3[l1-j+base]+=(s1[j]-'0')*(s2[i]-'0');//从1开始
// printf(" %c %c %d\n",s1[j],s2[i],s3[l1-j+base]);
}
/进位
k=1+base;放在里面是防止循环过程中溢出
while(k<=l1+base-1||s[k]!=0){
if(s3[k]>9){
s3[k+1]+=s3[k]/10;
s3[k]%=10;
}
k++;
}
}///k代表最高位的前一位
for(j=k-1;j>=1;j--){
printf("%lld",s3[j]);
}
}
}