很多错误是意想不到的。。。这就需要我们掌握多种调试的方法
在一些地方设置printf()是个很好的选择,通过观察输出数据,你就能看出错误,有的题很简单,一旦第一遍敲错,很难用眼睛看出错误的~
这题很简单
#include<stdio.h>
#include<string.h>int juedui(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
char a[330],b[330];
int i,j,n,m,v[302];
memset(a,'0',sizeof(a));//把a、b清成0也可以的
memset(b,'0',sizeof(b));
while(scanf("%s %s",a,b)!=EOF)
{
int t=0;
n=strlen(a);
m=strlen(b);
for(i=0;i<n;i++){
int ans=1;
for(j=0;j<m;j++)
{
if(a[i+j]+b[j]>99)
{
ans=0;
break;
}
}
if(ans==1)
{
v[t++]=i+juedui(n-i,m);
}
}
for(i=0;i<m;i++){
int ans=1;
for(j=0;j<n;j++) //这层循环不必担心第二个齿轮比较长的情况,因为我开的数组足够大,而且清成了0,所以后边加起来都不超过99 ‘\n' 的码是10。也无妨
{
if(b[i+j]+a[j]>99)
{
ans=0;
break;
}
}
if(ans==1)
{
v[t++]=i+juedui(m-i,n);
}
}
int maxn;
maxn=v[0];
if(t==0)
maxn=n+m;
else {
for(i=0;i<t;i++)
{
if(v[i]<maxn)
maxn=v[i];
}
}
printf("%d\n",maxn);
memset(a,'0',sizeof(a));
memset(b,'0',sizeof(b));
}
return 0;
}