C语言 检查将两个数字的相应十进制数字相加是否在每个位置产生相同的值



我需要检查两个数字中十进制数字的垂直总和在每个元素中是否相同。

例如:数字 1 = 153,数字 2 = 345。 分别添加十进制数字:

1 + 3 = 4
5 + 4 = 9
3 + 5 = 8

所以 153 和 345 不匹配。


但如果数字 1 = 543 且数字 2 = 456:

5 + 4 = 9
4 + 5 = 9
3 + 6 = 9

数字和均为 9,因此函数结果应为true

似乎我需要使用模数和一段时间循环?

任何意见将不胜感激!

使用伪代码,我相信可以实现这样的事情。函数返回 0 = 假,1 = 真。我不确定mod是否是 C 函数,但由于您只要求"类似 C",我认为它应该足够了。

int compare(int a, int b)
{
int compareTo = -1;
while(a > 0 && b > 0)
{
int temp = (a mod 10) + (b mod 10);
if (compareTo == -1)
{
compareTo = temp;
}
else 
{
if (compareTo != temp) 
return 0;
}
a /= 10;
b /= 10;
}
return 1;
}

根据@Peter的评论进行编辑:

unsigned int compare(unsigned int a, unsigned int b)
{
unsigned int compareTo = (a % 10) + (b % 10);
a /= 10;
b /= 10;  
while(a > 0 && b > 0)
{
unsigned int temp = (a % 10) + (b % 10);
if (compareTo != temp)
return 0;
a /= 10;
b /= 10;  
}
return 1;
}

我用伪代码写这个,因为我更熟悉Java。我也没有考虑数字是否不同。假设它们是相同的位数,此流程应该可以工作:

int number1 = 153;
int number2 = 345;
int number1Length = String.valueOf(number1).length();
int number2Length = String.valueOf(number2).length();
int digit1Sum = null;
int digit2Sum = null;
int digit3Sum = null;
for (int i = 0, n = number1Length; i < n; i++){
String character1Iterator = String.valueOf(number1).getChar(i);
String character2Iterator = String.valueOf(number2).getChar(i);
digit{i}Sum = Integer.parseInt(character1Iterator) + Integer.parseInt(character2Iterator);
}
boolean digitsEqual = false;
if(digit1Sum == digit2Sum && digit1Sum == digit3Sum){
return true;
}

您可能需要稍微重构以满足您的需求,使用不同数量的数字,以适应 C 等,但这基本上是抓取每个数字的第一个值并将其相加。然后它遍历每个数字并将它们相加,直到所有数字位相加。然后它检查以确保它们都是相等的。

相关内容

最新更新