Проверить признак делимости на 11 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Число делится на 11, если разность между суммой цифр, стоящих на нечётных местах, и суммой цифр, стоящих на чётных местах, кратна 11. Проверить этот признак для всех натуральных чисел, не превосходящих заданного , и вывести числа, кратные 11. Вот код. Скажите что не так
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i,d,d1=0,d2=0,sumd1=0,sumd2=0,c=0,r=0;
    printf("Vvedite d\n");
    scanf("%i",&d);
    for(i=1;i<=d;i++)
    {
        d2=d;
        while (d2>0)
        {
        d1=i%10;
        c++;
        if(c%2==0)
            sumd1+=d1;
        else
            sumd2+=d2;
        d2=i/10;
    }
    r=sumd2-sumd1;
    if(r%11==0)
        printf("%i ",r);
    else
        printf("NO\n");
    }
 
    return 0;
}

Решение задачи: «Проверить признак делимости на 11»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int d,d2=0,sumd1=0,sumd2=0,c=0,r=0,raznica;
    printf("Vvedite d\n");
    scanf("%i",&d);
        for(d2=d; d2>(-1); d2--){
        d2=d;
        while (d2>0)
        {
        r=d2%10;
        c++;
        if(c%2==0)
            sumd1+=r;
        else
            sumd2+=r;
        d2=d2/10;
        }
    raznica=sumd2-sumd1;
    if(raznica%11==0)
        printf("YES\n");
    else
        printf("NO\n");
    }
 
    return 0;

Объяснение кода листинга программы

В этом коде проверяется, делится ли введенное число на 11. Вот список действий, которые происходят в коде:

  1. Вводится число d с помощью функции scanf.
  2. Инициализируются переменные d2, sumd1, sumd2, c, r и raznica со значениями 0.
  3. Выводится сообщение Vvedite d с помощью функции printf.
  4. Для каждого введенного числа d выполняются следующие действия:
    • d2 присваивается значение d.
    • d2 разбивается на отдельные цифры, начиная с самой правой, с помощью цикла while и операции % (остаток от деления).
    • Для каждой цифры выполняются следующие действия:
      • r присваивается значение текущей цифры.
      • c увеличивается на 1.
      • Если c четное (т.е. делится на 2 без остатка), то r добавляется к sumd1.
      • Если c нечетное, то r добавляется к sumd2.
      • d2 уменьшается на 10 с помощью операции / (целочисленное деление).
    • raznica вычисляется как разница между sumd2 и sumd1.
    • Проверяется, делится ли raznica на 11 без остатка. Если да, то выводится YES, в противном случае выводится NO.
  5. Цикл завершается, когда d2 становится отрицательным.
  6. Программа возвращает 0, заканчивая свою работу.

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

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