当数字在数字中出现两次时打开标志 - C
Turn the flag on when the digits shows twice in a number - C
不使用数组.. 如果一个数字中有两次或更多次相同的数字,我如何设法将标志从 1 变为 0?
当它们都是整数时,temp和temp2是同一个数字,是一个4位数字
for(i = 0; i < 4; i++) //if a digits shows twice
{
n = temp % 10;
for(k = 0; k <= 6; k++)
{
if(n == temp2 % 10)
{
counter++;
}
temp2 /= 10;
}
temp /= 10;
if(counter > 1)
{
flag = 0;
}
counter = 0;
}
结果是它不起作用..有些东西不起作用
您取最低有效位并检查它是否出现在数字的其余部分中。如果找到,您就完成了。如果找不到,则将数字除以 10 并重复该过程。示例:
n = 123456789;
step 1: Is 9 present in 12345678
step 2: Is 8 present in 1234567
step 3: Is 7 present in 123456
.. and so on ..
所以首先你要写一个函数来判断一个数字是否包含一个特定的数字。该函数可能如下所示:
int contains_digit(int number, int digit)
{
while(number)
{
if ((number % 10) == digit) return 0; // Return zero when found
number /= 10;
}
return 1; // Return one if not found
}
然后您为原始数字中的所有数字调用该函数并测试该数字除以 10 的数字。例如,如果数字是 1234,您调用函数如下:
contains_digit(123, 4)
contains_digit(12, 3)
contains_digit(1, 2)
可以是这样的:
int main( void )
{
int n = 12434;
int flag = 1;
while(n && flag)
{
flag = contains_digit(n/10, n % 10);
n /= 10;
}
printf("flag is %d\n", flag);
return 0;
}
不使用数组.. 如果一个数字中有两次或更多次相同的数字,我如何设法将标志从 1 变为 0?
当它们都是整数时,temp和temp2是同一个数字,是一个4位数字
for(i = 0; i < 4; i++) //if a digits shows twice
{
n = temp % 10;
for(k = 0; k <= 6; k++)
{
if(n == temp2 % 10)
{
counter++;
}
temp2 /= 10;
}
temp /= 10;
if(counter > 1)
{
flag = 0;
}
counter = 0;
}
结果是它不起作用..有些东西不起作用
您取最低有效位并检查它是否出现在数字的其余部分中。如果找到,您就完成了。如果找不到,则将数字除以 10 并重复该过程。示例:
n = 123456789;
step 1: Is 9 present in 12345678
step 2: Is 8 present in 1234567
step 3: Is 7 present in 123456
.. and so on ..
所以首先你要写一个函数来判断一个数字是否包含一个特定的数字。该函数可能如下所示:
int contains_digit(int number, int digit)
{
while(number)
{
if ((number % 10) == digit) return 0; // Return zero when found
number /= 10;
}
return 1; // Return one if not found
}
然后您为原始数字中的所有数字调用该函数并测试该数字除以 10 的数字。例如,如果数字是 1234,您调用函数如下:
contains_digit(123, 4)
contains_digit(12, 3)
contains_digit(1, 2)
可以是这样的:
int main( void )
{
int n = 12434;
int flag = 1;
while(n && flag)
{
flag = contains_digit(n/10, n % 10);
n /= 10;
}
printf("flag is %d\n", flag);
return 0;
}