求任意两个正数之和的程序中的问题
int ctoi(char c) /*字符转整型的自定义函数*/{
int d;
if(c==48)
d=0;
else if(c==49)
d=1;
else if(c==50)
d=2;
else if(c==51)
d=3;
else if(c==52)
d=4;
else if(c==53)
d=5;
else if(c==54)
d=6;
else if(c==55)
d=7;
else if(c==56)
d=8;
else if(c==57)
d=9;
return d;
}
main()
{
static int i,j,k,a=1,z[1000];
static char x[1000],y[1000];
printf("please input 567 <CR> 99445 to test");
/*输入567回车99445来测试 这两数的和为100012*/
scanf("%s%s",x,y);
for(i=0;i<=1000;i++)
{
if(x[i]=='\0')
{
for(j=0;j<=1000;j++)
{
if(y[j]=='\0')
{
break;
}
}
break;
}
}
for(k=0;k<=1000;k++)
z[k]=0;
i=i-1;
j=j-1;/*找到输入的两个数的最后一位*/
for(k=0;a;k=k+1,i--,j--)
{
if(i<=-1)
x[i]=0;
if(j<=-1)
y[j]=0;/*问题在这块↓ 为什么除了x[2]的值是对的 其它都不对 而y[j]都是对的?*/
z[k]=z[k]+(ctoi(x[i])+ctoi(y[j]));
printf("x[%d]=%d ,y[%d]=%d\n",i,ctoi(x[i]),j,ctoi(y[j]));
if(z[k]>=10) /*如何改能让x[1]=6,x[0]=5 ?~*/
{
z[k]=z[k]-10;
z[k+1]=1;
}
if(i<=0&&j<=0)
break;
}
for(k=0;k<=1000;k++)
{
if(z[k]=='\0'&&z[k]!=48)
{
k=k-1; /*找 和 的最后一位*/
break;
}
}
/*for(k;k>0;k--)
printf("%d",z[k]);*/
getch();
}
/*该程序是算任意两正数之和*/
[ 本帖最后由 sainimu78 于 2010-2-11 17:41 编辑 ]