Найти числа, десятичная запись которых есть строго возрастающая или строго убывающая последовательность - C (СИ)
Формулировка задачи:
Решение задачи: «Найти числа, десятичная запись которых есть строго возрастающая или строго убывающая последовательность»
#include <stdio.h>
int func(int a)
{
int t, t1, t2;
t1=a%10;
a/=10;
t2=a%10;
if(t1<t2)
t=1;
else
if(t1>t2)
t=0;
else
return 0;
while(a/10)
{
t1=t2;
a/=10;
t2=a%10;
if(t1>=t2 && t==1)
return 0;
if(t1<=t2 && t==0)
return 0;
}
return 1;
}
int main()
{
int N;
scanf("%d",&N);
for(int i=10; i<N; i++)
if(func(i))
printf("%d\n", i);
return 0;
}
Объяснение кода листинга программы
В этом коде определена функция с именем func, которая принимает целое число в качестве входного параметра. Внутри функции происходит деление этого числа на 10 и сохранение остатка в переменной t1. Затем число делится на 10 еще раз, и сохраняется новый остаток в переменной t2. Если t1 меньше t2, то число является возрастающей последовательностью, и переменная t устанавливается равной 1. Если t1 больше t2, то число является убывающей последовательностью, и переменная t устанавливается равной 0. Если t1 равно t2, то число не является ни возрастающей, ни убывающей последовательностью, и функция возвращает 0. Затем в функции начинается цикл while, который продолжается до тех пор, пока число не станет однозначным (делится на 10 без остатка). Внутри цикла происходит обновление t1 и t2, а также проверка условий для определения типа последовательности. Если число является возрастающей последовательностью и t равно 1, или если число является убывающей последовательностью и t равно 0, то функция возвращает 0. В функции main() считывается число N от пользователя. Затем в цикле for выполняется проверка функции func для каждого числа от 10 до N-1. Если функция func возвращает 1, то это число выводится на экран. Код, представленный в этом списке, выполняет следующие действия:
- Включает заголовочный файл stdio.h, который содержит функции ввода-вывода.
- Определяет функцию func с типом int, которая принимает int в качестве аргумента.
- Внутри функции func происходит деление введенного числа на 10 и сохранение остатка в переменной t1.
- Число делится на 10 еще раз, и сохраняется новый остаток в переменной t2.
- Если t1 меньше t2, то переменная t устанавливается равной 1. Если t1 больше t2, то переменная t устанавливается равной 0. Если t1 равно t2, то функция возвращает 0.
- Затем в функции начинается цикл while, который продолжается до тех пор, пока число не станет однозначным.
- Внутри цикла происходит обновление t1 и t2, а также проверка условий для определения типа последовательности.
- Если число является возрастающей последовательностью и t равно 1, или если число является убывающей последовательностью и t равно 0, то функция возвращает 0.
- В функции main() считывается число N от пользователя.
- Затем в цикле for выполняется проверка функции func для каждого числа от 10 до N-1.
- Если функция func возвращает 1, то это число выводится на экран.
- Функция main() возвращает 0, чтобы указать, что она успешно завершилась.