Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
67
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

6.2.10.7. Цикл с предусловием ‑while

while (<условие>) <оператор>.

Проверка условия про­изводится перед выполнением тела цикла. Если результат вычисления условного выражения ‑ истина, то выпол­няется оператор (или группа операторов). Перед входом в цикл while в первый раз обычно инициализируют одну или несколько переменных для то­го, чтобы условное выражение имело какое-либо значение. Оператор или группа операто­ров, составляющих тело цикла, должны, как правило, из­­менять значения одной или нескольких переменных, входя­щих в ус­лов­ное выражение, с тем, чтобы в конце концов выражение обратилось в нуль, и цикл завершился. Оператор continue передает управ­ле­ния на начало следующего повторения цикла. Цикл while завершается, если условие ста­ло ложным или в теле цикла встретился оператор break или return.

Пример программы поиска элемента в массиве:

Int main(int argc, char **argv) // основная функция

{ int scores[100];extern int search(int data[ ],int size,int key);// объявл.функции

int i; for (i = 0; i < 100; i++) scores [ i ] = i; // заполнение массива

printf( «\nИндекс числа 107 в массиве = %d\n»,search (scores, 100, 107 ) );

getch(); return 0;

} // конец основной функции

int search (int data [],int size,int key) // функция поиска элемента массива

{ int index = 0; while ( index < size && data [ index ] != key ) index++;

return ( data [index]==key )?index : -1;}

6.2.10.8.Цикл с постусловием ‑dowhile

В цикле do while проверка условия осуществляется после выпол­нения тела цикла. Синтаксис цикла: do <оператор>while (<условие>);

Оператор continue передает управление на начало следующего пов­то­рения цикла. Цикл прекращает выполняться, когда условие становится ложным или внутри цикла встретился оператор break или return.

Пример функции сравнения двух строк (str1, str2):

int main(int argc, char **argv) // основная функция

{extern int compare ( char str1 [ ], char str2 [ ] ); char str1 [ 80 ], str2 [ 80 ];

printf («\nВведите первую строку: «); scanf( «%s», str1); // ввод строки 1

printf («\nВведите вторую строку: « ); scanf ( «%s», str2); // ввод строки 2

if ( compare (str1,str2 )< 0) printf ( «\nПервая строка меньше второй «);

else if (compare (str1,str2 )==0) printf ( «\n\nПервая строка равна второй»);

else printf («\n\nПервая строка больше второй»); getch();

} // конец основной функции

int length (char str [ ]) // функция вычисления длины строки

{int index=0; while (str [index++]!= 0 ); return -index;}

int compare (char str1 [ ], char str2 [ ] ) // функция сравнения строк

{ extern int length(char str[ ]); int len1 = length(str1); int len2=length( str2 );

int index=-1; int minlength=(len1<len2)?len1:len2; // длина короткой строки

do index++; while (index < minlength && str1[index] ==str2[index]);

if (len1== len2 && str1[index] == str2[index]) return 0; // строки равны

if ( str1[index]==str2[index] &&len1 < len2)return -1; // строка 1 < строки 2

if (str1[index]==str2[index] &&len2 > len1) return 1; // строка 1 > строки 2

if (str1[index ]<str2[index]) return -1; else return 1; // строка 1 > строки 2

}