数组处理
#include<stdio.h> int e[1001],c[1001],d[1001];
main()
{ char a[1000],x;int i,j,k,m,n,step,g,h,p;
scanf ("%d",&step);
for (g=0;g<step;g++)
{ for (i=0;;)
{ scanf ("%c",&a[i]);
if (a[i]=='\n'&&i!=0) break;
else i++;
}
for (k=1000,j=0;j<i;j++,k--)
{ if (a[j]>='0'&&a[j]<='9')
c[k]=a[j]-'0';
if (a[j]=='+'||a[j]=='-') break;
}
k=k+1;h=1000+k;
for (;k<=h-k;k++)
{ p=c[k];
c[k]=c[h-k];
c[h-k]=p;
}
x=a[j];
for (n=1000;j<i;j++,n--)
{ if (a[j]>='0'&&a[j]<='9')
d[n]=a[j]-'0';
}
n=n+1;h=1000+n;
for (;n<=h-n;n++)
{ p=d[n];
d[n]=d[h-n];
d[h-n]=p;
}
switch (x)
{ case ('+'):
{ for (n=1000;n>=0;n--)
{ e[n]=c[n]+d[n]+e[n];
if (e[n]>=10)
{ e[n]=e[n]-10;
e[n-1]=e[n-1]+1;
}
}
}; break;
case ('-'):
{ for (n=1000;n>=0;n--)
{ e[n]=c[n]-d[n]+e[n];
if (e[n]<0)
{ e[n]=e[n]+10;
e[n-1]=e[n-1]-1;
}
}
}; break;
}
for (i=0;;i++)
if (e[i]!=0) break;
for (;i<1001;i++)
printf ("%d",e[i]);
printf ("\n");
}
}
这个计算为什么第一次时对的,第二次就不对???
各位进来的请试一下,谢谢。
输入的数为
2
213914+23466123
32862934-23481243
输出
23680037
9381691