【发布时间】:2016-01-22 23:36:00
【问题描述】:
给定两个数字。我想比较这两个数字的位置符号。
说数字 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);
}
【问题讨论】:
-
将数字保留为字符串,从两个字符串的末尾开始使用
charAt()并更新mask直到条件为真。你不需要两个 for 循环。 -
我不清楚为什么第一个示例中的结果是 6(完全一致)。毕竟(十进制)表示中只有五个字符。在第二个示例中,您有结果 1,其中唯一的协议位于首位(个位数)。