Программы оперируют с данными. Данные хранятся в переменных — специальных областях памяти, отведенных для хранения данных. Каждая переменная имеет свой тип и должна быть объявлена перед использованием. При использовании в программе ранее не объявленной переменной компилятор выдаст сообщение об ошибке вроде
test.cpp: In function 'int main()': test.cpp:5: 'c' undeclared (first use this function) test.cpp:5: (Each undeclared identifier is reported only once for each function it appears in.)
В этом сообщении указывается имя файла и номер строки, в которой обнаружена ошибка
(test.cpp:5
), а также описание ошибки ('c' undeclared
— объект с именем
'c'
не объявлен).
Объявление переменной имеет следующий вид:
<тип переменой> <один или несколько идентификаторов переменных через запятую>;
Например, переменные n
и m
типа int
можно объявить такой строкой:
int n, m;
Переменную x
типа double
можно объявить такой строкой:
double x;
Значения переменных сразу после объявления не определены и являются произвольными. Например, если написать следующую программу:
int a; cout << a;
то на экран будет выведено произвольное целое число, например, -1208725516 (так называемый "мусор").
Идентификатор переменной — это ее имя, которое должно быть последовательностью
букв латинского алфавита, символа подчеркивания и цифр, начинающейся с буквы. Примеры правильных идентификаторов:
а
, i
, Year
, school179
. Имена переменных чувствительны к регистру букв, то есть
Number
, number
, NUMBER
и nUMbeR
— это четыре разных переменных.
Арифметическая инструкция — это некоторое выражение, состоящее из констант, идентификаторов переменных и арифметических операторов, которая завершается точкой с запятой. Самый главный арифметический оператор — это оператор присваивания ‘=’, который присваивает одной переменной, идентификатор которой указывается слева от оператора ‘=’ значение некоторого выражения, которое стоит справа. Например:
a = 2; b = a + 1;
Мы начнем с рассмотрения только целочисленных величин. Для хранения в памяти целочисленных величин
как правило используются переменные типа int
. С переменными типа int
можно
делать следующие арифметические действия:
+ | Сложение |
- | Вычитание |
* | Умножение |
/ | Деление (целочисленное) |
% | Остаток от деления |
Особого внимания заслуживает операторы деления и остатка. Деление производится нацело, с отбрасыванием целой части. Например, 10/3 это 3, 179/10 это 17, 2/5 это 0. Оператор % возвращает остаток от деления того, что записано справа на то, что записано слева. Например, 10%3 это 1, 179%10 это 9, 2%5 это 2.
В арифметическом выражении сначала выполняются слева направо все операторы умножения и деления, затем слева направо все операторы сложения и вычитания, затем справа налево все операторы присваивания. При необходимости порядок действий можно изменить при помощи скобок.
Для того, чтобы вывести на экран значение переменной или текстовой строки нужно
использовать объект “cout
”
и оператор “<<
”,
который в данном случае следует называть "Поместить в". cout
— объект,
связанный со стандартным выводом программы, как правило, это терминал. Для того, чтобы перейти при печати на
новую строку необходимо поместить в cout
стандартный объект endl
.
Текстовые строки при выводе на экран необходимо заключать в двойные кавычки. Если хочется вывести на экран несколько объектов (переменных, текстовых строк и т.д.), то их нужно разделять между собой оператором ‘<<’.
Для того, чтобы считать значение переменной нужно использовать объект
“cin
” и оператор ‘>>
’, который
надо называть "Извлечь из". При этом считывание данных будет производиться со стандартного ввода программы,
как правило, являющегося клавиатурой. Если хочется за одну операцию считать несколько переменных, то их идентификаторы
нужно разделять между собой оператором “>>
”.
Обобщим все изложенное выше в более сложной программе, которая находит сумму двух введенных чисел.
#include <iostream> using namespace std; int main() { int a, b, s; cout << "Введите два числа: "; cin >> a >> b; s = a + b; cout << a << "+" << b << "=" << s << endl; return 0; }
В этом листке нельзя пользоваться условными инструкциями if
, циклами for
и while
.
Также нельзя пользоваться тернарным оператором ? :
, функциями abs
,
fabs
, операциями типа ==
и т.д.
#include <stdio.h> int main() { int a, b, s; scanf("%d%d", &a, &b); s = a + b; printf("%d", s); return 0; }
#include <iostream> using namespace std; int main() { int a, b, s; cin >> a >> b; s = a + b; cout << s << endl; return 0; }
Это задание необходимо сделать дома. Установите на компьютер среду разработки Code::Blocks с компилятором MinGW G++, запустите, напишите простую программу, скомпилируйте и запустите. Сделайте скриншот экрана, на котором видна среда Code::Blocks, исходный код программы и запущенная программа, скриншот сохраните в формате JPEG, сдайте файл в тестирующую систему.
Даны два целых числа A и B. Вычислите их сумму.
Ввод | Вывод |
---|---|
1 |
3 |
\(n\) школьников делят \(k\) яблок поровну, неделяющийся остаток остается в корзинке. Сколько яблок достанется каждому школьнику? Сколько яблок останется в корзинке? Программа получает на вход числа \(n\) и \(k\) и должна вывести два числа: количество яблок у каждого школьника и количество яблок, оставшихся в корзинке.
Ввод | Вывод |
---|---|
3 |
4 2 |
Дано натуральное число. Выведите его последнюю цифру.
Ввод | Вывод |
---|---|
179 |
9 |
Дано натуральное число. Найдите число десятков в его десятичной записи (то есть вторую справа цифру его десятичной записи).
Ввод | Вывод |
---|---|
179 |
7 |
Дано трехзначное число. Найдите сумму его цифр.
Ввод | Вывод |
---|---|
179 |
17 |
Дано целое число n. Выведите следующее за ним четное число.
Ввод | Вывод |
---|---|
7 |
8 |
8 |
10 |
Обувная фабрика собирается начать выпуск элитной модели ботинок. Дырочки для шнуровки будут расположены в два ряда, расстояние между рядами равно \(a\), а расстояние между дырочками в ряду \(b\). Количество дырочек в каждом ряду равно \(N\). Шнуровка должна происходить элитным способом “наверх, по горизонтали в другой ряд, наверх, по горизонтали и т.д.” (см. рисунок). Кроме того, чтобы шнурки можно было завязать элитным бантиком, длина свободного конца шнурка должна быть \(l\). Какова должна быть длина шнурка для этих ботинок?
Программа получает на вход четыре натуральных числа \(a\), \(b\), \(l\) и \(N\). Программа должна выводить одно число – искомую длину шнурка.
Ввод | Вывод |
---|---|
2 |
26 |
В некоторой школе решили набрать три новых математических класса и оборудовать кабинеты для них новыми партами. За каждой партой может сидеть два учащихся. Известно количество учащихся в каждом из трех классов. Выведите наименьшее число парт, которое нужно приобрести для них.
Программа получает на вход три натуральных числа: количество учащихся в каждом из трех классов.
Ввод | Вывод |
---|---|
20 |
32 |
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.
Ввод | Вывод |
---|---|
150 |
2 30 |
1441 |
0 1 |
Пирожок в столовой стоит \(a\) рублей и \(b\) копеек. Определите, сколько рублей и копеек нужно заплатить за \(n\) пирожков. Программа получает на вход три числа: \(a\), \(b\), \(n\), и должна вывести два числа: стоимость покупки в рублях и копейках.
Ввод | Вывод |
---|---|
10 |
20 30 |
2 |
10 0 |
Напишите программу, которая считывает значения двух переменных a и b, затем меняет их значения местами (то есть в переменной a должно быть записано то, что раньше хранилось в b, а в переменной b записано то, что раньше хранилось в a). Затем выведите значения переменных.
Ввод | Вывод |
---|---|
3 |
7 3 |
Примечание. Решением задачи не является такой код:
scanf("%d%d", &a, &b); printf("%d%d", b, a);
Решите предыдущую задачу без использования дополнительной переменной.
В некоторой школе занятия начинаются в 9:00. Продолжительность урока — 45 минут, после 1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут.
Дан номер урока (число от 1 до 10). Определите, когда заканчивается указанный урок. Выведите два целых числа: время окончания урока в часах и минутах.
Ввод | Вывод |
---|---|
3 |
11 35 |
2 |
10 35 |
Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени. Программа на вход получает три целых числа — часы, минуты, секунды, задающие первый момент времени и три целых числа, задающих второй момент времени. Выведите число секунд между этими моментами времени.
Ввод | Вывод |
---|---|
1 |
3661 |
1 |
50 |
Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью \(v\) километров в час. На какой отметке он остановится через \(t\) часов?
Программа получает на вход значение \(v\) и \(t\). Если \(v>0\), то Вася движется в положительном направлении по МКАД, если же значение \(v<0\), то в отрицательном.
Программа должна вывести целое число от 0 до 108 — номер отметки, на которой остановится Вася.
Ввод | Вывод |
---|---|
60 |
11 |
-1 |
108 |
За день машина проезжает \(n\) километров. Сколько дней нужно, чтобы проехать маршут длиной \(m\) километров?
Программа получает на вход числа \(n\) и \(m\).
Ввод | Вывод |
---|---|
700 |
2 |
700 |
3 |
\(n\) школьников делят \(k\) яблок “поровну”, то есть так, чтобы количество яблок, доставшихся любым двум школьникам, отличалось бы не более, чем на 1.
Программа получает на вход числа \(n\) и \(k\) и должна вывести количество школьников, которым достанется яблок меньше, чем некоторым из их товарищей.
Ввод | Вывод |
---|---|
7 |
5 |
7 |
0 |
Улитка ползет по вертикальному шесту высотой \(h\) метров, поднимаясь за день на \(a\) метров, а за ночь спускаясь на \(b\) метров. На какой день улитка доползет до вершины шеста?
Программа получает на вход натуральные числа \(h\), \(a\), \(b\), и должна вывести одно натуральное число. Гарантируется, что \(a>b\).
Ввод | Вывод |
---|---|
10 |
8 |
В часах села батарейка, и они стали идти вдвое медленнее. Когда на часах было \(x_1\) часов \(y_1\) минут, правильное время было \(a_1\) часов \(b_1\) минут. Сколько времени будет на самом деле, когда часы в следующий раз покажут \(x_2\) часов \(y_2\) минут?
Программа получает на вход числа \(x_1\), \(y_1\), \(a_1\), \(b_1\), \(x_2\), \(y_2\) в указанном порядке. Все числа целые. Числа \(x_1\), \(a_1\), \(x_2\) — от 0 до 23, числа \(y_1\), \(b_1\), \(y_2\) — от 0 до 59.
Выведите два числа \(a_2\) и \(b_2\), определяющие сколько будет времени на самом деле, когда на часах будет \(x_2\) часов \(y_2\) минут.
Ввод | Вывод |
---|---|
12 |
10 36 |
12 |
14 0 |
Тесты к этой задаче закрытые.
Напишите программу, которая считывает два целых числа \(a\) и \(b\) и выводит наибольшее значение из них. Числа — целые от 1 до 1000.
При решении задачи можно пользоваться только
целочисленными арифметическими операциями +
, -
,
*
, //
, %
, =
.
Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями.
Ввод | Вывод |
---|---|
8 |
8 |
5 |
8 |
5 |
5 |
Имеется \(N\) кг металлического сплава. Из него изготавливают заготовки массой \(K\) кг каждая. После этого из каждой заготовки вытачиваются детали массой \(M\) кг каждая (из каждой заготовки вытачивают максимально возможное количество деталей). Если от заготовок после этого что-то остается, то этот материал возвращают к началу производственного цикла и сплавляют с тем, что осталось при изготовлении заготовок. Если того сплава, который получился, достаточно для изготовления хотя бы одной заготовки, то из него снова изготавливают заготовки, из них— детали и т.д.
Напишите программу, которая вычислит, какое количество деталей может быть получено по этой технологии из имеющихся исходно \(N\) кг сплава.
Программа получает на вход три натуральных числа \(N\), \(K\), \(M\), при этом \(K\ge M\), сами числа могут быть очень большими (пошаговое моделирование не получится).
Выведите одно число — количество деталей, которое может получиться по такой технологии.
Ввод | Вывод |
---|---|
10 |
4 |
13 |
3 |
14 |
4 |
13 |
2 |
1 |
0 |
Тесты к этой задаче закрытые.