Цикл с постусловием do...While
Общая форма записи
Do
{
блок операций;
} while(выражение);
Цикл с постусловием
Цикл do...while — это цикл с постусловием, где истинность выражения проверяется после выполнения всех операций, включенных в блок, ограниченный фигурными скобками.Тело цикла выполняется до тех пор, пока выражение не станет ложным, то есть тело цикла с постусловием выполнится хотя бы один раз.
Использовать цикл do...while лучше использовать в тех случаях, когда должна быть выполнена хотя бы одна итерация, либо когда инициализация объектов, участвующих в проверке условия, происходит внутри тела цикла.
Пример. Ввести число от 0 до 10
#include <stdio.h>
#include <stdlib.h>
int main() {
int num;
system("chcp 1251");
system("cls");
do
{
printf("Введите число от 0 до 10: ");
scanf("%d", &num);
}
while((num < 0) || (num > 10));
printf("Вы ввели число %d", num);
getchar(); getchar();
return 0;
}
Параметрический цикл for
Общая форма записи
for (инициализация параметра; проверка условия окончания; коррекция параметра) {
блок операций;
}
for — параметрический цикл (цикл с фиксированным числом повторений). Для организации такого цикла необходимо осуществить три операции:
· инициализация параметра - присваивание параметру цикла начального значения;
· проверка условия окончания - сравнение величины параметра с некоторым граничным значением;
· коррекция параметра - изменение значения параметра при каждом прохождении тела цикла.
Эти три операции записываются в скобках и разделяются точкой с запятой (;). Как правило, параметром цикла является целочисленная переменная.
Инициализация параметра осуществляется только один раз — когда цикл for начинает выполняться. Проверка условия окончания осуществляется перед каждым возможным выполнением тела цикла. Когда выражение становится ложным (равным нулю), цикл завершается. Коррекция параметра осуществляется в конце каждого выполнения тела цикла. Параметр может как увеличиваться, так и уменьшаться.
Пример
#include <stdio.h>
int main() {
int num;
for(num = 1; num < 5; num++)
printf("num = %d\n",num);
getchar();
return 0;
}
Можно опустить одно или несколько выражений, но нельзя опускать точку с запятой, разделяющие три составляющие цикла.
Пример
#include <stdio.h>
int main()
{
int num = 1;
for(; num < 5; num++)
printf("num = %d\n",num);
getchar();
return 0;
}
Параметры, находящиеся в выражениях в заголовке цикла можно изменить при выполнении операции в теле цикла.
В цикле for может использоваться операция запятая (,) для разделения нескольких выражений. Это позволяет включить в спецификацию цикла несколько инициализирующих или корректирующих выражений. Выражения, к которым применяется операция запятая, будут вычисляться слева направо.
Пример
#include <stdio.h>
int main()
{
int i,j;
for(i = 1, j=2; i < 5; i++, j=j+2)
printf("i = %d j = %d\n",i,j);
getchar();
return 0;
}
В Си допускаются вложенные циклы, то есть когда один цикл находится внутри другого:
for ( i=0; i<n; i++) { // цикл 1
for( j=0; j<n; j++) { // цикл 2
// блок операций цикла 2;
}
// блок операций цикла 1;
}
Пример: Вывести числа от 0 до 99
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int i,j;
for(i=0; i<10; i++) {
for(j=0; j<10; j++) {
printf("%2d ",i*10+j);
}
printf("\n"); // перевод строки
}
getchar();
return 0;
}
Результат выполнения