Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
200801_Lec_02.pdf
Скачиваний:
8
Добавлен:
16.03.2015
Размер:
303.6 Кб
Скачать

{

printf ("Введите ваш пароль:"); scanf ("%d", &usr_input);

}

while (passwd != usr_input);

......

2.4. Цикл со счётчиком

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

Синтаксис цикла со счётчиком таков:

for (начальное значение счётчика; проверяемое условие; шаг счётчика)

{

оператор1;

оператор2;

}

Изображение такого цикла в блок-схеме следующее:

Приведём пример использования цикла for() - вычислим сумму первых n членов ряда Фибоначчи (числовая последовательность: 1 1 2 3 5 8 13 21 34 ..... - в которой каждый последующий член равен сумме двух предыдущих).

Решение сводится к вычислению каждого последующего члена ряда Фибоначчи и добавлению его к общей сумме.

Для решения задачи потребуется как минимум пять переменных:

1.для хранения суммы (sum),

2.для хранения ограничения, вводимого пользователем, т. е. числа суммируемых членов (n),

3.4. для хранения текущего и предыдущего членов ряда (ecurrent и eprevious).

5. для счётчика (сколько членов ряда уже входит в сумму) - i.

Поскольку ряд состоит из целых чисел, логично использовать целый тип переменных.

Возможно использование беззнакового целого, т. к. отрицательных чисел в ряде Фибоначчи нет.

Алгоритм решения:

Задать начальные значения первых двух членов ряда Фибоначчи (все члены, начиная с третьего, можно вычислить, суммируя два предыдущих члена),

обнулить переменные суммы и счётчика: sum = 0; i = 0;

рассчитать сумму одного члена ряда: sum = sum + ecurrent; (а также нарастить счётчик на единицу: i++; чтобы отметить, что один член ряда уже просуммирован).

Постоянно, до достижения n, добавляем в сумму текущий член ряда, увеличиваем

счётчик на единицу: sum = sum + ecurrent; i++;

Вычисляем новый член ряда: enext = eprevious + ecurrent;

Обратите внимание, что при суммировании следующий член ряда станет текущим, текущий - предыдущим

eprevious = ecurrent; ecurrent = enext;

... и так далее до достижения n; Код выглядит следующим образом:

#include <stdio.h> int main (void)

{

int eprevious, ecurrent, enext; int sum, n;

int i;

ecurrent = 1;

/*

задаём явно первый член ряда */

sum = ecurrent;

/*

включаем первый член ряда в сумму */

eprevious = ecurrent; /* сдвигаемся на 1 член, текущий член ряда становится предыдущим */

ecurrent = 1; /* задаём явно второй член ряда */

printf ("Please enter the number of row members to sum: "); scanf ("%d", &n);

for (i = 1; i <= n; i++)

{

sum = sum + ecurrent;

enext = ecurrent + eprevious; eprevious = ecurrent; ecurrent = enext;

}

printf ("\n The sum of %d first row members is %d", n, sum);

}

2.5. Дополнительные операции присваивания

Довольно удобно использовать сокращённую нотацию для выполнения арифметических

операций. В сокращённой нотации определены следующие операторы:

+=

*=

-=

%=

/=

 

Следующая таблица устанавливает соответствие между сокращённой и стандартной нотациями:

Операция в сокращённой

Стандартный

нотации

эквивалент

 

 

i += 1;

i = i + 1;

i -= 1;

i = i - 1;

i /= 2;

i = i / 2;

i *= 2;

i = i * 2;

i %= 2;

i = i % 2;

Также часто используются унарные операторы инкремента и декремента: ++ и --. Оператор ++ увеличивает значение переменной на единицу; оператор -- - уменьшает.

Операторы инкремента и декремента могут использоваться в постфиксной (оператор стоит после переменной) и префиксной (оператор стоит перед переменной) форме.

Различие между формами употребления операторов иллюстрируется следующим примером:

Номер Код строки

1int a = 1, b = 1;

2int p, q;

3p = a ++;

4q = ++b;

Значения переменных после выполнения операторов каждой строки будут таковы:

Номер строки

 

Значения переменных

 

 

 

 

a

b

p

 

q

1

1

1

нет

 

нет

2

1

1

нет

 

нет

3

2

1

1

 

нет

4

2

2

1

 

2

Обратите внимание, что при использовании постфиксной формы (строка 3) сначала производится операция присваивания (p = a), а потом уже значение переменной a увеличивается на единицу (a++). При использовании префиксной формы (строка 4) сначала значение b увеличивается на единицу, а потом уже новое значение b присваивается переменной q.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]