printf("Введите номер числа Фибоначчи ");
scanf("\n %d", &n);
a = 1; // a=F(0), а соответствует F(i-2)
b = 1; // b=F(1), b соответствует F(i-1)
for (i = 2; i <= n; i++) {
c = a + b; // с соответствует F(i)
// в качестве а и b берется следующая пара чисел
a = b;
b = c;
}
printf("%d-е число Фиббоначчи = %d", n, b);
}
ПРИМЕР ЗАДАЧИ (EX8). Вычислить 50 значений функции у = arctg(x2), где X изменяется от начального значения а с шагом h. Результаты вывести в виде таблицы значений X и У.
#include
#include
int main {
float x, y, a, h;
int i;
printf("Введите исходные данные a, h \n");
scanf("%f %f", &a, &h);
x = a;
for (i = 1; i <= 5; i++) {
y = atan(pow(x, 2));
printf("x = %7.3f у = %7.3f \n", x, y);
x = x + h;
}
}
ПРИМЕР ЗАДАЧИ (EX9). Вычислить значение функции
#include
#include
int main {
float x, y, z, h;
int i, n;
printf("Введитe исходные данные h, n \n");
scanf("%f %n", &h, &n);
x = 0;
z = 0;
for (i = 1; i <= n; i++) {
y = sin(x) / sqrt(1 + x);
z = z + y;
x = x + h;
}
printf("x = %7.3f z = %7.3f", x, z);
}
ПРИМЕР ЗАДАЧИ (EX10). Вычислить сумму членов ряда
#include
#include
int main {
float x, s, p;
int k, n;
printf("Введите исходные данные х, n \n");
scanf("%f %d", &x, &n);
p = 1;
s = 0;
for (k = 1; k <= n; k++) {
p = p*x;
s = s + (p + k) / pow(k, 2);
}
printf("s = %7.3f", s);
}
ЦИКЛЫ С УСЛОВИЕМ
Оператор цикла while: while (выражение) { … };
Действие: Выполняется оператор до тех пор, пока значение выражения в скобках истинно. Проверка значения выражения происходит перед каждым выполнением оператора. Когда значение выражения ложно, цикл while заканчивается. Если выражение ложно с самого начала, оператор не выполняется ни разу.
Комментарий: Следует заметить, что после ключевого слова while и выражения, заключенного в круглые скобки, точка с запятой не ставится. Оператор иногда называется телом цикла. В теле цикла должны выполняться действия, в результате которых меняется значение управляющего выражения. В противном случае можем получить бесконечный цикл.
Пример (EX11):
#include
int main {
int i, s;
i = 1;
while (scanf("%d", &s)) {
printf("Введенное число %d\n", s);
i++;
};
}
Оператор цикла do-while: do { … } while (выражение);
Действие: В операторе do-while тело цикла выполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз.
Комментарий: После слова while и выражения, заключенного в скобки, ставится точка с запятой. Если в теле цикла содержится более одной инструкции, то операторы цикла заключаются в фигурные скобки.
Например (EX12):
#include
int main {
int i, s;
i = 1;
do {
printf("Введенное число %d\n", s);
i++;
} while (scanf("%d", &s));
}
ОПЕРАТОР BREAK
Описание: break используется для прекращения выполнения цикла из-за обнаружения ошибки, для организации дополнения к условию в заголовке цикла, для прекращения бесконечного цикла. Например:
while (st > 0 && st < 25) {
if (st == 4||st == 8||st == 12) break;
}
Работа цикла полностью прекращается, как только условие в операторе if становится истинным.
ОПЕРАТОР CONTINUE
Действие. Этот оператор может использоваться во всех трех типах циклов. Как и в случае оператора break, он приводит к изменению характера выполнения программы. Однако вместо завершения работы цикла наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей.
Например:
Заменим в предыдущей программе оператор break на continue.
while (st > 0 && st < 25) {
if (st == 4 || st == 8|| st == 12) continue;
}
При истинном условии в операторе if оператор continue вызывает пропуск идущих за ним операторов тела цикла и осуществляется переход к началу следующей итерации.
ПРИМЕР ЗАДАЧИ. Вычислить значение функции у = f(x) для