比较两个数字的位置表示法

时间:2015-10-23 12:21:18

标签: loops variables for-loop

给出两个数字。我想比较两个数字位置符号。

说数字1是:25000 说数字2是:25000

结果是面具。如果每个位置匹配,那么掩码(在这种情况下)是:6

说数字1是:00000 说2号是:22220

然后掩码为1,因为只有第一位匹配。

我的逻辑是,如果两个数字的长度不相等,那么它会打印出它不相等,什么也不做。但如果它们匹配,那么我将它们转换为整数。之后,如果各自的数字相等,我会检查2个for循环。如果是,那么我将一个添加到maszk变量。

我的代码在下面是错误的(我已经输入了标题并声明了变量和getline。)任何人都可以帮忙吗?

#include <stdio.h>
if( strlen(s) != strlen(s2) ) printf("The length doesn't match! \n");


else {


for(i=0; i<=20; i++)
{

 for(j=0; j<=20; j++)
    {
    szam1[i] = atoi(s);
    szam2[j] = atoi(s2);

    }
  if( szam1[i] == szam2[j] ) maszk++;

}
}

printf("The mask of the two numbers: %d", mask);

}

1 个答案:

答案 0 :(得分:0)

我不知道你的bug在哪里,但我想到了这个算法 - 可能更简单:

Given two numbers A and B...
m = max(digits(A), digits(B))
maxMask = m + 1
s = A-B 
if (s == 0)
    mask = maxMask
else
    mask = 0
    loop m times
      if (s % 10 == 0)
        mask++
        s /= 10
      else
        break

即减去它们。如果结果为零,则掩码为1 +最大位数。如果没有,那么掩码的结尾有许多尾随零。

此外,您可以考虑重命名该变量。 “掩码”经常用来表示something else