改了一下,原因在注释里。可续问。
#include
#include
void main(void){/*主程序*/
char a[200],b[200];
int e[400]/*[400]*/={0,},f[400]={0,},g[400]={0,},i,j,m,n,d,t=0;//用不着二维数组,并初始化
gets(a);
gets(b);
m=strlen(a);//2
n=strlen(b);
d=m+n;
for(i=0;i
for(j=0;j
//4已在声明时初始化,这里用不着了
//for(i=0;i
//for(i=0;i<400;i++)
//for(j=0;j<400;j++)
// e[i]=0;//[j]
for(j=0;j
/*e[j][i+j]=f[i+j];*///e[0][0]=f[0]=9 e[0][1]=f[1]=9 e[1][1]=f[1]=9
}
}
//for(j=0;j
//}
for(j=d-1;j>=1;j--){//这一段把g[]改成f[],因为位积在f[]里
if(f[j]>=10){
t=f[j]/10;
f[j]=f[j]%10;
f[j-1]=f[j-1]+t;
}
}
if(!f[0]) d=2;//加一句,
for(j=0;j
printf("\n");//加一句
}
一个明显错误 a[i]=a[i]-'0';
b[j]=b[j]-'0';
我知道你是想得到数字,但是呢,你这两个数组都是char型的,放里面都是按照ASCII值存放的,这样的话你小于255的数都能表示。但是超过了就不行了,并且你这样写也是错误的算法,得不到你要的那个值,出现了你描述的现象,你可以不用把他们放里面啊,用的时候先减再弄不就好了,不必要在把算出的值保存起来。
能告诉我你这是要干神马吗??看了半天没明白你这是要干神马。。。。。
这程序要干什么啊!!!!!!!!!!!!!!!!