Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ПРОГР.doc
Скачиваний:
13
Добавлен:
12.11.2019
Размер:
2 Мб
Скачать
☆
    1. Оператор do … while

В противоположность циклам for и while, сначала проверяющим условие, цикл do…while проверяет условие в конце. То есть, цикл do…while всегда выполняется, по крайней мере один раз. Стандартный вид цикла do…while следующий:

do {

последовательность операторов;

} while (условие);

Хотя в фигурных скобках нет необходимости при наличии одного оператора, они обычно используются для улучшения читабельности и устранения недоразумений по поводу цикла while.

Данный цикл do…while осуществляет чтение чисел с клавиатуры, пока одно из них станет меньше либо равно 100:

do {

scanf(“%d”, &num);

} while (num > 100);

Возможно, наиболее типичным использованием цикла do…while является процедура выбора пунктов меню. Когда набран корректный ответ, она возвращает значение функции. Неправильный ответ приводит к повторному вводу. Следующий пример являет собой программу проверки орфографии:

void menu(void)

{

char ch;

printf(“1. Проверка орфографии\n”);

printf(“2. Корректировка ошибок орфографии\n”);

printf(“3. Вывод ошибок орфографии на экран\n”);

printf(“ Сделайте ваш выбор: “);

do {

ch = getche(); /* чтение клавиатуры */

switch (ch) {

case ‘1’ :

check_spelling();

break;

case ‘2’ :

correct_errors();

break;

case ‘3’ :

display_errors();

break;

}

} while (ch!=’1’ && ch!=’2’ && ch=’3’);

}

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

    1. Оператор break

Оператор break имеет два назначения. Первое – это окончание работы оператора switch. Второе – это принудительное окончание цикла, минуя стандартную проверку условия. Данное значение здесь и рассматривается.

Когда оператор break встречается в теле цикла, цикл немедленно заканчивается и выполнение программы переходит на строку, следующую за циклом. Например:

#include <stdio.h>

main(void)

{

int t;

for (t=0; t<100; t++) {

printf(“%d “, t);

if (t = = 10) break;

}

}

Данная программа выводит числа от 0 до 10 включительно и заканчивает работу, поскольку break вызывает немедленный выход из цикла, минуя условие t < 100.

Оператор break вызывает выход из самого внутреннего цикла. Например:

for (t=0; t<100; ++t) {

count = 1;

for( ; ; ) {

printf(“%d “, count);

count ++;

if (count = = 10) break;

}

}

выводит числа от 1 до 10 включительно 100 раз. Каждый раз, когда встречается break, контроль передается внешнему циклу for.

    1. Оператор continue

Работа оператора continue чем-то похожа на работу оператора break. Но вместо форсированного окончания continue переходит с следующей итерации цикла, пропуская оставшийся код цикла. Например, следующая процедура выводит только положительные числа:

do {

scanf(“%d”, &x);

if (x<0) continue;

printf(“%d “, x);

} while (x != 100);

В циклах while и do…while оператор continue вызывает переход к проверке условия и затем продолжает работу цикла. В случае for выполняется часть увеличения, затем проверяется условие и, наконец, выполняется само тело цикла. Предыдущий пример может быть изменен для вывода только 100 чисел следующим образом:

for (t=0; t<100; ++t) {

scanf(“%d”, &x);

if (x<0) continue;

printf(“%d “, x);

}

  1. Варианты задания

  1. Вводить последовательность чисел до тех пор, пока их сумма не достигнет М(М вводится и больше 0).Ввести, какое количество чисел составили искомую сумму (саму сумму тоже).

  2. Вводить последовательность до тех пор, пока не встретятся 3 подряд идущих положительных числа. Тогда прервать ввод и сообщить, сколько во введенной последовательности было:

а) всего чисел,

б) положительных чисел,

в) отрицательных чисел.

  1. Вычислить приближенное значение бесконечной суммы с точностью до =0,0001.

  1. Вычислить приближенное значение бесконечной суммы с точностью до =0,05.

  2. Вычислить приближенное значение бесконечной суммы с точностью до =0,00005.

  3. Вычислить приближенное значение бесконечной суммы с точностью до =0,0001.

  4. Вычислить приближенное значение бесконечной суммы с точностью до =0,001.

  5. Вычислить приближенное значение бесконечной суммы с точностью до =0,005.

  6. Вычислить приближенное значение бесконечной суммы с точностью до =0,0005.

  7. Вычислить приближенное значение бесконечной суммы с точностью до =0,01.

Вычислить приближенное значение бесконечной суммы с точностью до =0,05.