Тренировочные задания: Условия и циклы

Задачи на ветвления, циклы 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;
}

Подтверждение

—