Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб по С и C++.doc
Скачиваний:
216
Добавлен:
25.03.2015
Размер:
1.34 Mб
Скачать

Циклические операторы while и do–while

Основная форма циклического оператора while:

while (условие)

оператор;

где оператор – это простой, составной или пустой оператор.

Цикл выполняется до тех пор, пока условие принимает значение «истина», т.е. выражение в скобках возвращает ненулевой результат. Это цикл с предусловием – сначала проверяется условие, затем выполняется оператор. Поэтому цикл while не выполнится ни разу, если изначально результат вычисления условия будет равен 0.

Основная форма оператора do – while:

do

оператор;

while (условие);

где оператор – это простой, составной или пустой оператор.

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

В циклах типа while и do–while допустимы те же способы досрочного выхода из цикла и досрочное завершение текущего шага цикла, как и в операторе for, но в последнем случае в отличие от цикла for управление передается на проверку условия. Для предотвращения бесконечного цикла, внутри циклов while и do–while нужно предусмотреть изменение переменных, входящих в условие.

Например:

int i;

for (i=1;i<=300;i++) /* печать целых чисел, кратных 5 */

{

if (i%5!=0) continue;

printf(“%5d”,i);

}

Вложенные циклы

В случае вложенных циклов один цикл находится внутри другого, например:

for(i=nn;i<nk;i++)

for(j=mn;j<mk;j++)

оператор;

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

Пример: int i,j;

for(i=1;i<10;i++) /* печать таблицы умножения */

{ /* целых чисел */

for(j=1;j<4;j++)

printf(“\n %d*%d=%2d”, i, j, i*j);

printf(“\n”);

}

Пример использования оператора for

Вычислить . На печать программа должна выводить промежуточные и окончательный результаты.

Текст программы может иметь вид:

#include <stdio.h>

#include <conio.h>

void main(void)

{

float s;

int k,N;

clrscr( );

puts(“Введите N”);

scanf(“%d”,&N);

for (s=0, k=1; k<=N; k++)

{

s+=1.0/k;

printf(" \n k=%d s=%f ", k, s);

}

printf("\n ОТВЕТ: s=%f, Press any key...",s);

getch( );

}

Варианты индивидуальных заданий

Значение аргумента x изменяется от a до b с шагом h. Для каждого x найти значения функции Y(x), суммы S(x) и |Y(x)-S(x)| и вывести в виде таблицы. Значения a,b,h и n вводятся с клавиатуры. Функция Y(x) разложена в ряд S(x). Значения S и Y для данного аргумента x должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки. Работу программы проверить для a=0,1; b=0,8; h=0,1; n брать в зависимости от варианта задания (с факториалом, без факториала).

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

Примечание: Sh(x)=(Exp(x)-Exp(-x))/2 – гиперболический синус.

Ch(x)=(Exp(x)+Exp(-x))/2 – гиперболический косинус.