用一个数组表示一个正整数,一个数组元素表示整数的一位,例如396可以用数组表示A[0]=6,A[1]=9,A[2]=3,编写一个函数计算这样表示的两个整数A和B,之和存放在数组C中。注:假定不会超过100位。请用指针的方法解答,我只知道用三个指针分别指向A B C三个数组,但是进位怎么处理,请大家帮忙 关键是进位怎么处理的,谢谢。看到您的答案,但是没有看懂,如果有时间可以写个注释么?不胜感激
请问从flag2=0开始的代码是什么意思呢?另外a和b数组计算时不用反置过来后在相加么?
追答ab数组低位代表数字的低位,即a[0]代表个位,相加就是从低位向高位进位,所以不用反置数组了;
flag就是个标志,初始化为0,从后往前遇到一个不为0的数时就让flag位1,然后依次打印数组
int flag2=0;//标志
for(i=99;i>=0;i--)//从不为0的位开始输出
{
if(flag2==0)
{
if(c[i])
{
flag2=1;
printf("%d",c[i]);
}
}
else
{
printf("%d",c[i]);
}
}
printf("\n");
return 0;
}
这部分flag2还是作为进位标志么?还是没太明白这部分的意思
flag2就是标志有没有读到第一个非0位了,flag2为0就是没有读到非0位,反之就读到第一个非0位,然后条件if(flag2==0)不成立,依次从高位往低位打印数组,其实这段代码就是把数组高位的0去掉