Определить, сколько цифр содержит заданное целое число - C (СИ)
Формулировка задачи:
Помогите пожалуйста.
Использовать стандартные функции и арифметические операторы; изучить операторы отношения и присваивания, логические
операции, условный оператор и оператор-переключатель; научиться использовать в программах операторы цикла. Написать программы на изученные темы.
Определить, сколько цифр содержит заданное целое число и имеются ли в нем
повторяющиеся цифры.
Решение задачи: «Определить, сколько цифр содержит заданное целое число»
textual
Листинг программы
- int main(void) {
- int n0 = 0, n1 = 0, n2 = 0, n3 =0, n4 = 0, n5 = 0, n6 = 0, n7 = 0, n8 = 0,n9 = 0, x = 0;//x - введенное число
- printf("To determine how many digits it contains a given integer and whether it has repeating digits.\n\n");
- printf("Enter x \n");
- while (1) {
- printf("x = ");
- if (scanf("%lf", &x) == 1 )
- break;
- scanf("%*[^\n]%*c");
- printf("Entered is not the correct value. Enter again \n");
- }
- //int x = 1234233;
- bool noRepeatDigit = true;
- int nDigit;
- for (nDigit = 0; x!= 0; nDigit++)
- {
- if (noRepeatDigit)
- {
- switch (x % 10)
- {
- case 0: if (++n0 > 1) noRepeatDigit = false; break;
- case 1: if (++n1 > 1) noRepeatDigit = false; break;
- case 2: if (++n1 > 1) noRepeatDigit = false; break;
- case 3: if (++n1 > 1) noRepeatDigit = false; break;
- case 4: if (++n1 > 1) noRepeatDigit = false; break;
- case 5: if (++n1 > 1) noRepeatDigit = false; break;
- case 6: if (++n1 > 1) noRepeatDigit = false; break;
- case 7: if (++n1 > 1) noRepeatDigit = false; break;
- case 8: if (++n1 > 1) noRepeatDigit = false; break;
- case 9: if (++n9 > 1) noRepeatDigit = false; break;
- }
- }
- x /= 10;
- }
- printf("the number : %d\n", x);
- printf("The number of digits: %d\n", nDigit);
- if (noRepeatDigit)
- puts("Repeated numbers - no ");
- else
- puts("Repeated numbers - yes");
- return 0;
- }
Объяснение кода листинга программы
В этом коде определенная последовательность цифр в числе проверяется на повторяющиеся цифры. Если число содержит повторяющиеся цифры, код выведет сообщение Repeated numbers - yes
, в противном случае - Repeated numbers - no
.
- Создаются переменные для хранения количества цифр от 0 до 9: n0, n1, n2, n3, n4, n5, n6, n7, n8, n9.
- Создается переменная
x
для хранения введенного числа. - Пользователю предлагается ввести число, и цикл while будет выполняться до тех пор, пока не будет введено корректное число.
- Создается переменная
noRepeatDigit
для хранения флага, указывающего, содержит ли число повторяющиеся цифры. - Создается переменная
nDigit
для хранения количества цифр в числе. - Цикл for выполняется, пока число не станет равным 0. На каждой итерации из числа извлекается последняя цифра с помощью операции модуля (%).
- В зависимости от последней цифры, увеличивается соответствующая переменная
n0
,n1
,n2
,n3
,n4
,n5
,n6
,n7
,n8
,n9
. - Если флаг
noRepeatDigit
установлен в false, это означает, что число содержит повторяющиеся цифры, и выводится сообщениеRepeated numbers - yes
. - Если флаг
noRepeatDigit
установлен в true, это означает, что число не содержит повторяющихся цифр, и выводится сообщениеRepeated numbers - no
. - Выводится количество цифр в числе с помощью переменной
nDigit
. - Возвращается 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д