Основы C/C++

Условия, циклы и switch в C и C++

В этом уроке вы объедините циклы и инструкцию switch в небольшой программе, которая вычисляет средний балл и ставит оценку.

Введение

Инструкция if выбирает ветку в зависимости от того, истинно ли условие, switch обрабатывает случаи с конкретными значениями, а циклы повторяют блок до условия остановки. Синтаксис этих инструкций в C и C++ почти одинаковый.

Главное

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

Как это работает

Двигайте ползунок, чтобы менять балл. На блок-схеме подсвечивается путь программы, а в коде выделяется соответствующая строка.

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

C
Запустить →
main.c
#include <stdio.h>

int main(void) {
    int scores[] = {92, 71, 84};
    int total = 0;
    for (int i = 0; i < 3; ++i) total += scores[i];
    int average = total / 3;
    switch (average / 10) {
        case 10: case 9: puts("Grade A"); break;
        case 8: puts("Grade B"); break;
        default: puts("Keep practicing");
    }
    return 0;
}
Результат выполнения
Grade B
C++
Запустить →
main.cpp
#include <iostream>
#include <vector>

int main() {
    std::vector<int> scores{92, 71, 84};
    int total = 0;
    for (int score : scores) total += score;
    switch ((total / static_cast<int>(scores.size())) / 10) {
        case 10: case 9: std::cout << "Grade A\n"; break;
        case 8: std::cout << "Grade B\n"; break;
        default: std::cout << "Keep practicing\n";
    }
}
Результат выполнения
Grade B

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

Цикл for складывает три балла, чтобы найти среднее, а затем switch по значению average / 10 выбирает оценку. Всегда ставьте фигурные скобки, даже если в блоке одна строка, и не забывайте break в конце каждого case, чтобы программа случайно не перешла в следующий case. Индекс массива тоже всегда должен оставаться в допустимых границах.

C

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

C++

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

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

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

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

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

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

Все задачи