Определить, сколько цифр содержит заданное целое число - 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.

  1. Создаются переменные для хранения количества цифр от 0 до 9: n0, n1, n2, n3, n4, n5, n6, n7, n8, n9.
  2. Создается переменная x для хранения введенного числа.
  3. Пользователю предлагается ввести число, и цикл while будет выполняться до тех пор, пока не будет введено корректное число.
  4. Создается переменная noRepeatDigit для хранения флага, указывающего, содержит ли число повторяющиеся цифры.
  5. Создается переменная nDigit для хранения количества цифр в числе.
  6. Цикл for выполняется, пока число не станет равным 0. На каждой итерации из числа извлекается последняя цифра с помощью операции модуля (%).
  7. В зависимости от последней цифры, увеличивается соответствующая переменная n0, n1, n2, n3, n4, n5, n6, n7, n8, n9.
  8. Если флаг noRepeatDigit установлен в false, это означает, что число содержит повторяющиеся цифры, и выводится сообщение Repeated numbers - yes.
  9. Если флаг noRepeatDigit установлен в true, это означает, что число не содержит повторяющихся цифр, и выводится сообщение Repeated numbers - no.
  10. Выводится количество цифр в числе с помощью переменной nDigit.
  11. Возвращается 0, чтобы указать, что программа успешно завершилась.

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы