Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр - 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
, и результат ее работы выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д