给出两个数字。我想比较两个数字位置符号。
说数字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);
}
答案 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。