Тренировочные задания: Условия и циклы
Задачи на ветвления, циклы for/while и классические алгоритмы.
Задача 1. Максимум из трёх
Считайте три целых числа и выведите наибольшее.
Пример ввода:
3 9 5
Пример вывода:
9
Решение
#include <stdio.h>
int main(void)
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int max = a;
if (b > max) max = b;
if (c > max) max = c;
printf("%d\n", max);
return 0;
}
Задача 2. Чётное или нечётное
Определите, является ли число чётным, и выведите «чётное» или «нечётное».
Пример ввода:
7
Пример вывода:
нечётное
Решение
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
if (n % 2 == 0)
{
printf("чётное\n");
}
else
{
printf("нечётное\n");
}
return 0;
}
Задача 3. Сумма от 1 до N
Вычислите сумму всех целых чисел от 1 до N (N ≥ 1).
Пример ввода:
5
Пример вывода:
15
Решение
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
int sum = 0;
for (int i = 1; i <= n; i++)
{
sum += i;
}
printf("%d\n", sum);
return 0;
}
Задача 4. Таблица умножения
Выведите таблицу умножения числа k на 1..5 в формате «k x i = произведение».
Пример ввода:
3
Пример вывода:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
Решение
#include <stdio.h>
int main(void)
{
int k;
scanf("%d", &k);
for (int i = 1; i <= 5; i++)
{
printf("%d x %d = %d\n", k, i, k * i);
}
return 0;
}
Задача 5. Факториал
Вычислите n! для n от 1 до 12 (используйте long long).
Пример ввода:
5
Пример вывода:
120
Решение
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
long long fact = 1;
for (int i = 2; i <= n; i++)
{
fact *= i;
}
printf("%lld\n", fact);
return 0;
}
Задача 6. Числа Фибоначчи
Выведите первые N чисел Фибоначчи через пробел (F1 = 1, F2 = 1).
Пример ввода:
6
Пример вывода:
1 1 2 3 5 8
Решение
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
long long a = 1, b = 1;
for (int i = 1; i <= n; i++)
{
printf("%lld", a);
printf(i < n ? " " : "\n");
long long next = a + b;
a = b;
b = next;
}
return 0;
}
Задача 7. Простое число
Определите, является ли число простым. Выведите «да» или «нет».
Пример ввода:
13
Пример вывода:
да
Решение
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
if (n < 2)
{
printf("нет\n");
return 0;
}
for (int d = 2; d * d <= n; d++)
{
if (n % d == 0)
{
printf("нет\n");
return 0;
}
}
printf("да\n");
return 0;
}
Задача 8. НОД
Найдите наибольший общий делитель двух чисел (алгоритм Евклида).
Пример ввода:
48 36
Пример вывода:
12
Решение
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d %d", &a, &b);
while (b != 0)
{
int r = a % b;
a = b;
b = r;
}
printf("%d\n", a);
return 0;
}
Задача 9. Сумма цифр
Найдите сумму цифр натурального числа.
Пример ввода:
1234
Пример вывода:
10
Решение
#include <stdio.h>
int main(void)
{
long n;
if (scanf("%ld", &n) != 1 || n < 0)
{
printf("Ошибка ввода\n");
return 1;
}
int sum = 0;
while (n > 0)
{
sum += (int)(n % 10);
n /= 10;
}
printf("%d\n", sum);
return 0;
}
Задача 10. Число наоборот
Выведите число, записанное цифрами в обратном порядке (без ведущих нулей).
Пример ввода:
1200
Пример вывода:
21
Решение
#include <stdio.h>
int main(void)
{
long n;
scanf("%ld", &n);
long rev = 0;
while (n > 0)
{
rev = rev * 10 + n % 10;
n /= 10;
}
printf("%ld\n", rev);
return 0;
}