Условие выполнения цикла проверяется перед каждой итерацией, а приращение параметра цикла может быть переменным, поэтому, в отличие от Паскаля, в Си допускается изменение значения параметра цикла и условия продолжения цикла в теле этого же цикла. Может отсутствовать и сам оператор, выполняемый в цикле:
for (int count=0; getch()!=’\n’; count++);
Этот цикл подсчитывает количество вводимых с клавиатуры символов, пока не будет нажата клавиша ввода (она соответствует ESC-последовательности ‘\n’). В этом цикле параметр цикла count не входит в условие его выполнения - это тоже не обязательно.
В одном цикле for можно использовать одновременно несколько параметров цикла, которые при инициализации разделяются запятыми:
#define N 100
char temp, string[N];
for (top=0, bottom = N-1; top<bottom; top++, bottom--)
{
temp=string[top];
string[top]=string[bottom];
string[bottom]=temp;
}
Эта программа переворачивает строку символов string[N] .
Как и в других языках программирования, в Си разрешено использовать цикл в цикле, при этом циклы должны иметь разные параметры цикла:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MIN 6
#define MAX 10000
{
printf(“\nСовершенные числа от %d до %d:\n”, MIN, MAX);
for (num = MIN; num <= MAX; num += 2)
{
sum = 1;
for (factor = 2; factor < num; factor++)
{
if (num % factor == 0)
sum += factor;
}
if (sum == num)
printf(“\n%d”, num);
}
}
Эта программа осуществляет поиск всех совершенных чисел от 6 до 10000.
Для досрочного прекращения выполнения цикла и выхода из него используется оператор прерывания break:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MIN 2
#define MAX 10000
{
for (int n = MIN; n <= MAX; n++)
{
for (int i = MIN; i < n; i++)
{
if (n % i == 0)
}
if (i == n)
printf(“\n%d”, n);
}
}
Эта программа осуществляет поиск всех простых чисел от 2 до 1000.
Во вложенных циклах команда break прекращает выполнение только того цикла, в котором стоит.
Для пропуска одной итерации цикла (перехода к следующей итерации) используется команда продолжения continue:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MIN 3
#define MAX 100
{
for (int number = MIN; number <= MAX; number++)
{
if (number % 3 == 0)
printf(“\n%d”, number);
}
}
Эта программа осуществляет поиск всех чисел, кратныхтрем, от 3 до 100.
Примеры:
1. Вычислить Sn – сумму n первых натуральных чисел