Когда дано число n
, программа проверяет цифры n
по одной, сохраняя каждую в переменной digit
, а затем используя ее в качестве индекса в digit_seen
.
Если digit_seen[ digit ]
ложно, тогда di git раньше не видел, поэтому программа устанавливает digit_seen[ digit ]
в true и продолжает работу. Как объяснено в C программирование - Современный подход KN King :
Обратите внимание!
Изменение типа данных bool на любой тип данных (char, int, float ) по-прежнему дает правильные результаты. Как это не случай ???
/*
** Checks number for repeated digits
*/
#include <stdio.h>
#include <stdbool.h>
int main()
{
int digit;
bool digit_seen[ 10 ] = { false };
long n;
printf( "Enter a number: " );
scanf( "%ld", &n );
while( n > 0 ){
digit = n % 10;
if( digit_seen[ digit ] )
break;
digit_seen[ digit ] = true;
n /= 10;
}
if( n > 0 )
printf( "Repeated digit\n" );
else
printf( "No repeated digit\n" );
return ( 0 );
}