For(инициализация_цикла; условие;список выражений)
Тело_цикла
Оператор начинается с ключевого слова for, после которого в круглых скобках написаны три выражения, разделенные точкой с запятой.
инициализация_цикла – это последовательность определений, описаний и выражений, разделенных запятыми. Она выполняется один раз до начала выполнения цикла. Тело цикла будет повторяться до тех пор, пока условие не станет равным нулю. Список выражений вычисляется после каждого повторения тела цикла. условие может отсутствовать, в этом случае считается, что его значение истинно.
Блок-схема работы оператора итерационного цикла
Пример. Находим сумму четырех чисел, кратных 10, начиная с 0.
int i, sum=0;
for(i=0; i<4; i++) // 1 2 3 4
sum+=10*i; // 0 10 30 60 (0+10+20+30)
Пример. Находим сумму трех двоек и трех значений переменной n .
int s1=0,s2=0;
for(int i=0,n=5; n<6,i<3; i++,s1+=2) // s1=2 4 6
s2+=++n; // 6 13 21 (6+7+8)
В этом операторе также можно использовать операторы break, continue, return.
Любое из трех выражений может быть опущено (в том числе и все три). В этом случае получим бесконечный цикл, из которого можно выйти, воспользовавшись операторами break, return.
Все операторы цикла взаимозаменяемы.
Разрешено и широко используется вложение любых циклов в любые циклы. Допускаются вложенные циклы на любую глубину.
4.4 Оператор безусловного перехода
Синтаксис этого оператора следующий: goto имя_метки;
где имя_метки –метка оператора, которому передается управление.
Передача управления разрешена на любой помеченный меткой оператор в теле функции. Однако запрещено перескакивать через описания, содержащие инициализацию объектов. Есть ряд рекомендаций к использованию оператора goto: не входить во внутрь блока, условного оператора, переключателя, цикла.
Пример.
if(n>=n_max) goto M1; //переход на М1, еслиn>=n_max
n++;
M1: printf("n=%d ", n);
Массивы
5.1 Одномерные массивы
Массив – это совокупность переменных одного типа, элементы которого имеют одно имя и отличаются только индексом.
Синтаксис определения массива: тип имя_массива[размер];
где тип – один из базовых или производных типов,
размер– целочисленное константное выражение, определяющее количество элементов в массиве.
Три способа задания размера массива:
1) целой числовой константой или целочисленным выражением;
int a1[10]; // массив элементов типа int, состоящий из 10 элементов
2) именованной константой – со служебным словом const;
const int M=4;
float f1[M];//состоит из 4 элементов типа float
3) с помощью препроцессорной директивы #define.
#define N 20
char c1[N]; //массив, содержащий 20 символов.
Доступ к элементам массива осуществляется через индексы. Перечисление элементов массива начинается с нуля. Индексы должны быть целочисленными выражениями. В массиве a1 – первый элементa1[0], последний – a1[9].
В памяти машины компилятор размещает массив в последовательных ячейках (непрерывным блоком). Например: int m[3];
Их размещение в памяти схематично можно представить так:
m[0] | m[1] | m[2] |
Массивы бывают разного класса памяти. Массивы, определенные вне функций, в том числе вне функции main(),являются глобальными (внешними). Массивы, которые определены внутри функции, могут быть статическими (с словом static) или автоматическими.
Пример.
int a1[5];//массив внешний
Void main()
{float b1[4]; //массив автоматический
static long c1[3]; //массив статический
…}
Инициализация массива – присвоение начальных значений элементам при определении массива.
Элементы массива инициализируются неявно и явно. Неявно (по умолчанию) внешние и статические массивы инициализируются нулями, а массивы с автоматическим классом памяти – случайными, произвольными значениями.
Явная инициализация выполняется только при определении массива, она может быть полной и неполной. После определения массива ставится знак = и в фигурных скобках через запятую задаются значения элементов. При неполной инициализации незаданные элементы массива принимают нулевое значение, если массив внешний или статический, или случайные значения, если массив автоматический. При полной инициализации размер массива можно не указывать, он определиться автоматически. Например:
int а2[5]={1,5,4,3,2}; //полная инициализация
int а3[7]={1,5,2,7}; //неполная инициализация
int с[]={3,4,5}; //полная инициализация без указания размера массива
Объем памяти в байтах, занимаемый массивом можно определить с помощью операции sizeof(имя_массива). Например:
int n=sizeof(а2);//20 байт
Для работы с массивами часто применяются операторы цикла, наиболее часто используется оператор цикла for. Рассмотрим примеры различных фрагментов программ:
Пример. Определение суммы элементов массива
#include <stdio.h>
Void main()
{int a[10],sum=0;
for(int i=0;i<10;i++)
scanf("%d",&a[i]);//ввод массива с клавиатуры
for(i=0;i<10;i++)
sum+=a[i]; //подсчет суммы
printf("%d\n",sum);}
Пример. Поиск максимального значения элементов массива
#define N 5
#include<iostream>
#include<time.h> //для запуска генератора случайных чисел
#include<stdlib.h> //для подключения генератора случайных чисел
#include <stdio.h>
Void main()
{float fa[N],max; int k=0;
Дата добавления: 2016-04-11; просмотров: 1385;