Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр - C (СИ)
Формулировка задачи:
Написать программу, позволяющую определить, равна ли сумма двух первых цифр заданного числа четырехзначного числа сумме двух его последних цифр.
Решение задачи: «Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр»
textual
Листинг программы
#include <stdio.h> void digits(unsigned number, int dig[]) { if (number) { *dig = number % 10; digits(number / 10, dig + 1); } } int func(unsigned number) { int dig[10] = { 0 }; digits(number, dig); return (dig[0] + dig[1]) == (dig[2] + dig[3]); } int main() { unsigned number; printf("number: "); if (scanf("%u", &number) == 1) { printf("%s\n", func(number) ? "yes" : "no"); } return 0; }
Объяснение кода листинга программы
В этом коде:
- В функции
digits
происходит обход числа (переменнаяnumber
) с помощью алгоритма стека. На каждом шаге алгоритма, функцияdigits
** делит число на 10 и сохраняет последнюю цифру в массивеdig
. Затем рекурсивно вызывает себя для оставшейся части числа (которая при делении на 10 становится единицей). На последнем шаге, когда число становится равным 0, функция заканчивает свою работу. - В функции
func
создается массивdig
**, инициализируемый нулями. Затем вызывается функцияdigits
, которая заполняет этот массив цифрами числа. После этого функция проверяет условие, и если оно выполняется, возвращает1
, иначе0
. - В функции
main
программа запрашивает у пользователя ввод числа и сохраняет его в переменнойnumber
. Затем вызывается функцияfunc
, и результат ее работы выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д