Программы оперируют с данными. Данные хранятся в переменных — специальных областях памяти, отведенных для хранения данных. Каждая переменная имеет свой тип и должна быть объявлена перед использованием. При использовании в программе ранее не объявленной переменной компилятор выдаст сообщение об ошибке вроде
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; }
Напишите программу, которая считывает целое число и выводит текст, аналогичный следующему:
The next number for the number 179 is 180. The previous number for the number 179 is 178.
В данном случае было введено число 179.
Дано целое число a. Вычислите и выведите значение a4. Сколько операций умножения вы использовали? Какое наименьшее число операций умножения необходимо для решения этой задачи?
Дано целое число a. Вычислите a8 при помощи трех операций умножения.
Дано целое число a. Вычислите a6 при помощи трех операций умножения.
Дано целое число a. Вычислите a7 при помощи четырех операций умножения.
Дано целое число a. Вычислите a13 при помощи пяти операций умножения.
Дано целое число a. Вычислите a21 при помощи шести операций умножения.
Запустите эту программу и введите число 10. Почему получился такой странный ответ?.
Дано натуральное число. Найдите его последнюю цифру.
Дано двузначное число. Найдите число десятков в нем.
Дано натуральное число. Найдите число десятков в его десятичной записи (то есть вторую справа цифру его десятичной записи).
Дано трехзначное число. Найдите сумму его цифр.
Дано целое число n. Выведите следующее за ним четное число.
Ввод | Вывод |
---|---|
7 |
8 |
8 |
10 |
Дано два числа n и m. За день машина проезжает n километров. Сколько дней нужно, чтобы проехать маршут длиной m километров?
Ввод | Вывод |
---|---|
700 750 |
2 |
700 2100 |
3 |
Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество часов в сутках.
Ввод | Вывод |
---|---|
150 |
2 30 |
1441 |
0 1 |
Электронные часы показывают время в формате h:mm:ss
, то есть сначала записывается
количество часов, потом обязательно двузначное количество минут, затем обязательно двузначное количество секунд.
Количество минут и секунд при необходимости дополняются до двузначного числа нулями.
С начала суток прошло n секунд. Выведите, что покажут часы.
Ввод | Вывод |
---|---|
3602 |
1:00:02 |
129700 |
12:01:40 |
Напишите программу, которая считывает значения двух переменных a и b, затем меняет их значения местами (то есть в переменной a должно быть записано то, что раньше хранилось в b, а в переменной b записано то, что раньше хранилось в a). Затем выведите значения переменных.
Ввод | Вывод |
---|---|
3 7 |
7 3 |
Примечание. Решением задачи не является такой код:
cin >> a >> b; cout << b << " " << a;
.
Решите предыдущую задачу без использования дополнительной переменной.
Пирожок в столовой стоит a рублей и b копеек. Определите, сколько рублей и копеек нужно заплатить за n пирожков. Программа получает на вход три числа: a, b, n, и должна вывести два числа: стоимость покупки в рублях и копейках.
Ввод | Вывод |
---|---|
10 15 2 |
20 30 |
2 50 4 |
10 0 |
Даны значения двух моментов времени, принадлежачим одним и тем же суткам: часы, минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени. Программа на вход получает три целых числа — часы, минуты, секунды, задающие первый момент времени и три целых числа, задающих второй момент времени. Выведите число секунд между этими моментами времени.
Ввод | Вывод |
---|---|
1 1 1 |
3661 |
1 2 30 |
50 |
Дано четырехзначное число. Определите, является ли его десятичная запись симметричной. Если число симметричное, то выведите 1, иначе выведите любое другое целое число. Число может иметь меньше четырех знаков, тогда нужно считать, что его десятичная запись дополняется слева незначащими нулями.
Ввод | Вывод |
---|---|
2002 |
1 |
2008 |
37 |
Даны два натуральных числа n и m. Если одно из них делится на другое нацело, выведите 1, иначе выведите любое другое целое число.
Ввод | Вывод |
---|---|
2 8 |
1 |
8 2 |
1 |
3 5 |
7 |
Напишите программу, которая считывает значения двух переменных a и и, затем выводит наибольшее значение из них. a и и — натуральные числа от 1 до 1000.
При решении задачи можно пользоваться только переменными типа int
, операциями +
, -
,
*
, /
, %
, =
.
Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями.
Ввод | Вывод |
---|---|
8 5 |
8 |
5 8 |
8 |
5 5 |
5 |
Квадратную таблицу размером n×n заполнили натуральными числами от 1 до n2 по спирали по часовой стрелке, начиная с левой верхней угловой клетки. Вот пример заполнения для таблицы 4×4:
1 | 2 | 3 | 4 |
12 | 13 | 14 | 5 |
11 | 16 | 15 | 6 |
10 | 9 | 8 | 7 |
По числу, записанному в некоторой клетке, определите номер строки и столбца, в которой она находится. Строки нумеруются сверху вниз, столбцы – слева направо, начиная с 1.
Программа получает на вход два числа: размер таблицы n и число, стоящее в искомой клетке (от 1 до n2). Программа должна вывести два числа: номер строки и номер столбца.
Ввод | Вывод |
---|---|
5 1 |
1 1 |
4 16 |
3 2 |
100 2138 |
95 36 |
Решите обратную к предыдущей задачу — по номеру строки и столбца определите число, записанное в клетке.
Программа получает на вход три числа: размер таблицы n, номер строки и номер столбца. Программа должна вывести число, записанное в указанной клетке.
Ввод | Вывод |
---|---|
5 1 1 |
1 |
4 3 2 |
16 |
100 95 36 |
2138 |