逻辑有错吧?一个乘数为0时不就是1位吗?还要算?好像如下就可以了——
void main(void){
long long A,B;
int C;
scanf("%lld %lld", &A, &B);
if(A==0 || B==0) C=1;
else C=(int)(log10(A)+log10(B))+1;//如果你的平台没有log10就用你原来的算法.
printf ("%d", C);
}
要用unsigned long long和"%llu"