【发布时间】:2014-12-23 18:06:26
【问题描述】:
我读了两个号码,都是int。
我需要做的是打印高于但最接近第一个数字的数字,例如378,但不包含第二个数字中的任何数字,例如,78。
输入:
378 78,输出:390,因为这是378之上的最小数字,不包含78的任何数字。输入:
3454 54,输出:3600,因为3600是第一个不包含5或4的最接近的数字,54的数字。
我试图通过从第二个数字的长度获取第一个数字的最新模数来做到这一点。例如:
378 78
378 mod 100 == 78,然后比较78 和78 的数字,如果有相同的数字移动到379,然后检查379 mod 100 == 79。比较79和78时,7是同一个数字。
以此类推,直到我们得到390。这应该适用于所有 N 大小的数字。
这是我到目前为止所做的……几乎什么都没有。
#include <stdio.h>
int main()
{
int number1, number2;
int closest = number1 + 1;
scanf("%d %d",&number1,&number2);
int count_modulus = 1;
while(number2)
{
count_modulus = count_modulus * 10;
number2 = number2 / 10;
}
int mod = count_modulus;
int n2 = number2;
while(number1)
{
int remain = number1 % mod;
while(remain)
{
if((remain % 10 == number2 % 10))
{
}
else
{
}
}
}
printf("%d",closest);
return 0;
}
【问题讨论】:
-
int closest = number1 + 1;这里number1未初始化。 -
没关系,因为如果我有 378 和 78,它需要从 379 开始。
-
检查您的代码。你在拥有价值之前正在做
+1。 -
没关系,我只需要第二个while括号里的代码,最接近的是加一,因为我需要检查下一个数字,并在while操作。跨度>
-
看来您的方法只考虑大于
number1的数字。如果您想找到“最接近的”,为什么不考虑小于number1的数字? 370 70 --> 369