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

Разворот строки в C и C++

В этом уроке вы развернёте строку прямо в её собственной памяти, меняя местами симметричные символы.

Введение

Разворот строки - хорошее упражнение на работу с индексами и обмен элементов на месте (in-place), то есть без создания новой строки. Идея в том, чтобы поменять первый символ с последним и двигаться к середине.

Главное

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

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

C
Запустить →
main.c
#include <stdio.h>
#include <string.h>
int main(void) {
    char text[] = "CodeUtility"; size_t length = strlen(text);
    // Swap mirrored characters in place.
    for (size_t i = 0; i < length / 2; ++i) {
        char temporary = text[i]; text[i] = text[length - 1 - i]; text[length - 1 - i] = temporary;
    }
    puts(text);
}
Результат выполнения
ytilitUedoC
C++
Запустить →
main.cpp
#include <algorithm>
#include <iostream>
#include <string>
int main() {
    std::string text = "CodeUtility";
    // reverse applies swaps across the selected range.
    std::reverse(text.begin(), text.end());
    std::cout << text << '\n';
}
Результат выполнения
ytilitUedoC

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

Цикл меняет местами text[i] и text[length - 1 - i] с помощью временной переменной temporary, пока две позиции не встретятся в середине строки. Обратите внимание: чтобы строку можно было менять, её нужно объявить как массив char text[]. На экран выводится ytilitUedoC.

C

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

C++

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

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

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

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

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

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

Все задачи