Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 4.doc
Скачиваний:
20
Добавлен:
13.03.2016
Размер:
404.99 Кб
Скачать

Упражнения

1. Составьте программу решения квадратного уравнения: ax2+bx+c=0, учитывающую все возможные варианты исходных данных.

В каждом случае должно выводиться соответствующее решение или сообщение.

2.Составьте программу, которая выводит на экран меню:

1.Первое

2.Второе

3.Третье

и, в зависимости от выбранного пункта, выдает одну из надписей: «Получите суп.», «Получите картошку», «Получите компот», «Оставайтесь голодным». Напишите два варианта программы: с использованием условного оператора if и с использованием переключателя.

4.8. Программирование циклов

Циклы организуются, чтобы выполнить некоторый оператор или группу операторов определенное число раз. В языке Си три оператора цикла: for, while и do - while.

Цикл с параметром записывается, в следующем виде:

for (<выражение_1>; <выражение_2>; <выражение_3>) <тело_цикла>

Тело цикла составляет либо один оператор, либо несколько операторов, заключенных в фигурные скобки { ... } (после блока точка с запятой не ставится). В выражениях 1, 2, 3 фигурирует специальная переменная, называемая управляющей. По ее значению устанавливается необходимость повторения цикла или выхода из него.

Выражение_1 присваивает начальное значение управляющей переменной, выражение_З изменяет его на каждом шаге, а выражение_2 проверяет, не достигло ли оно граничного значения, устанавливающего необходимость выхода из цикла.

Пример 1:

for (i = 1; i < 10; i++)

{ ...

}

for (сh = 'a'; ch != 'p';) scanf ("%c", &ch);

/* Цикл будет выполняться до тех пор, пока с клавиатуры

не будет введен символ 'p' */

Любое из трех выражений в цикле for может отсутствовать, однако точка с запятой должна оставаться. Таким образом, for ( ; ; ) {...} - это бесконечный цикл, из которого можно выйти лишь другими способами.

Используя операцию «запятая», можно в выражение 1 внести инициализацию значений сразу нескольких переменных:

for(F=1,i=1; i<=N; i++) F=F*i;

Еще один вариант вычисления N!. В нем на месте тела цикла находится пустой оператор, а вычислительная часть внесена в выражение 3.

for(F=1,i=1; i<=N; F=F*i, i++);

Этот же оператор можно записать в следующей форме:

for(F=1,i=1; i<=N; F*=i++);

В языке Си оператор for является достаточно универсальным средством для организации циклов.

Цикл с предусловием записывается в таком виде:

while (<выражение>) <тело_цикла>

Выражение в скобках может принимать ненулевое (истинное) или нулевое (ложное) значение. Если оно истинно, то выполняется тело цикла и выражение вычисляется снова. Если выражение ложно, то цикл while заканчивается. Этот цикл может ни разу не выполнится, если выражение сразу же принимает нулевое значение.

Пример 2. Нахождение наибольшего общего делителя двух натуральных чисел.

// Определение НОД(a,b)

#include <iostream.h>

void main()

{ int a,b;

cout<<”a=”; cin>>a;

cout<<”b=”; cin>>b;

while(a!=b)

if(a>b) a-=b; else b-=a;

cout<<”\nНОД(”<<a<<”,”<<b<<”)=”<<a;

}

Цикл с постусловием записывается следующим образом:

do {<тело_цикла>} while (выражение);

Основным отличием между циклами while и do - while является то, что тело в цикле do - while выполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз.

Пример 3. Подсчет количества цифр в записи натурального числа.

#include <iostream.h>

void main()

{ int a,n=0;

cout<<”a=”; cin>>a;

do

{ n+=1; a/=10;}

while(a>0);

cout<<”\n n=”<<n;

}

Допускается вложенность одних циклов в другие, т.е. в теле любого цикла могут появляться операторы for, while и do - while.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]