Упражнения по C/C++ для начинающих

Последовательность Фибоначчи на C и C++

В этом уроке вы выведете первые 10 чисел последовательности Фибоначчи, используя всего две переменные и один цикл.

Введение

Последовательность Фибоначчи начинается с 0 и 1, а каждое следующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8... Это классическое упражнение на циклы и одновременное обновление нескольких переменных.

Главное

  • Включите предупреждения компилятора (compiler warnings) и исправьте их все.
  • Хорошо понимайте тип и время жизни (lifetime) каждого значения.
  • Всегда проверяйте входные данные и границы индексов массивов.

Примеры кода на C и C++

C
Запустить →
main.c
#include <stdio.h>
int main(void) {
    int first = 0, second = 1;
    for (int i = 0; i < 10; ++i) {
        printf("%s%d", i ? " " : "", first);
        // Advance the pair without storing the whole sequence.
        int next = first + second; first = second; second = next;
    }
    puts("");
}
Результат выполнения
0 1 1 2 3 5 8 13 21 34
C++
Запустить →
main.cpp
#include <iostream>
int main() {
    int first = 0, second = 1;
    for (int i = 0; i < 10; ++i) {
        if (i) std::cout << ' ';
        std::cout << first;
        // Advance the pair without storing the whole sequence.
        int next = first + second; first = second; second = next;
    }
    std::cout << '\n';
}
Результат выполнения
0 1 1 2 3 5 8 13 21 34

Сравнение C и C++

Программе нужны только две переменные first и second, чтобы хранить последнюю пару чисел, без хранения всей последовательности. На каждом шаге она выводит first, вычисляет next = first + second и сдвигает пару на одну позицию. Выражение i ? " " : "" выводит пробел только перед числами, начиная со второго.

C

C использует небольшие процедурные функции и открыто показывает, как данные представлены в памяти.

C++

C++ по-прежнему позволяет работать на низком уровне, но добавляет библиотечные типы и более безопасные абстракции.

Упражнения для практики

Запустите обе версии, а затем измените код, чтобы увидеть разницу в безопасности, которую даёт каждый язык.

  • Проверьте неверный ввод и граничные значения.
  • Скомпилируйте с флагами -Wall -Wextra -Wpedantic, чтобы включить больше предупреждений.
  • Вынесите общие объявления в заголовочный файл, а реализацию в отдельный файл.

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи