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