В языке C++ существует три вида циклов: цикл while
c предусловием, цикл while
с постусловием, цикл for
.
while
("пока") с предусловиемЦикл while
с предусловием позволяет выполнить одну
и ту же последовательность действий пока проверяемое условие истинно.
При этом условие записывается до тела цикла и проверяется до выполнения
тела цикла.
При выполнении цикла while
сначала проверяется условие.
Если оно ложно, то цикл не выполняется и управление передается
на следующую инструкцию после тела цикла while
.
Если условие истинно, то выполняется инструкция, после чего
условие проверяется снова и снова выполняется инструкция.
Так продолжается до тех пор, пока условие будет истинно.
Как только условие станет ложно, работа цикла завершится и управление передастся следующей инструкции
после цикла.
Синтаксис цикла while
("пока") c предусловием такой:
while (условие) { блок инструкций }
Следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:
int i=1; while (i<=10) { cout<<i*i<<endl; ++i; }
В этом примере переменная i
внутри цикла изменяется от 1 до 10. Такая переменная,
значение которой меняется с каждым новым проходом цикла, называется счетчиком.
Заметим, что после выполнения этого фрагмента значение переменной i
будет равно 11,
поскольку именно при i==11
условие i<=10
впервые перестанет выполняться.
В следующем примере цикл используется для того, чтобы найти
количество знаков в десятичной записи целочисленной
переменной i
.
int Ndigits=0; while(n!=0) { Ndigits=Ndigits+1; n=n/10; }
Внутри цикла значение переменной n
уменьшается в 10 раз до тех пор, пока она не станет равна 0.
Уменьшение целочисленной переменной в 10 раз (с использованием целочисленного деления) эквивалентно отбрасыванию
последней цифры этой переменной.
while
("пока") с постусловиемЦикл "пока" с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия):
do { Блок инструкций } while (условие);
Поскольку условие проверяется после выполнения тела цикла, то блок цикла с постусловием всегда будет
выполнен хотя бы один раз, независимо от истинности условия. Это может привести к ошибкам, поэтому
использовать цикл while
с постусловием следует только тогда, когда это действительно упрощает
алгоритм.
Во всех задачах этого листочка основная (содержательная) часть программы должна быть
оформлена в виде функции. Функция main
должна считывать значения входных
данных, вызывать основную функцию, решающую задачу, выводить результат на экран.
1 4 9 16 25 36 49
).
YES
, если является и слово NO
, если не является.
7
программа должна вывести 3
.
10 20
программа должна вывести 9
. x и y – действительные числа,
ответ – целое число.
10 100
программа должна вывести 8
.
int SumOfDigits (int n)
,
вычисляющую сумму цифр числа n. Выведите сумму цифр числа n.
int NumberOfZeroes (int n)
,
определяющую количество нулей среди всех цифр числа n. Выведите результат.
int MinDigit (int n)
и
int MaxDigit (int n)
, определяющую наименьшую и наибольшую цифры данного числа.
Выведите наименьшую и наибольшую цифры данного числа (например, при вводе 179
программа
выводит 1 9
).
int reverse(int n)
, которая переставляет цифры числа в обратном порядке
(например, reverse(179)==971
). Напишите программу, которая по данному натуральному n
печатает его цифры в обратном порядке.
bool IsPalindrome (int n)
, проверяющую по данному числу n, является ли оно палиндромом.
Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов,
не превосходящих K. Например, при вводе 1
программа выводит 1
, а при вводе
100
программа выводит 18
.