Тема: Циклы. Реализация циклического процесса. Инструкции FOR, WHILE, DO WHILE
Циклы используют в случае, если некоторые действия надо выполнить многократно, каждый раз с новыми данными. Инструкции цикла определяют действия, которые надо выполнить многократно, и количество их повторений. К инструкциям цикла относят операторы FOR, WHILE и DO WHILE.
FOR - инструкция цикла, которая используется, если количество повторений тела цикла известно до начала его выполнения. Форма записи оператора такова:
for(Инициализация; УсловиеВыполнения; Изменение)
{инструкции цикла (тело цикла) - один или несколько операторов,
заключенных в операторные скобки}
Инициализация - инструкция инициализации счетчика циклов.
УсловиеВыполнения - выражение, значение которого определяет условие выполнения инструкций цикла. Инструкции цикла выполняются до тех пор, пока УсловиеВыполнения истинно.
Изменение - инструкция изменения параметра цикла. Как правило, эта инструкция изменяет значение переменной, которая входит В УсловиеВыполнения.
|
|
Например, переменная i изменяется от начального значения 1 до конечного 5 с шагом 1:
for(i=1;i<=5;i++) {}
Задача 3а
Вычислить сумму (произведение):
#include <stdio.h>
#include <conio>
#include <math.h>main ()
{x,y=1; int n;("x="); scanf("%f",&x); (n=2;n<=5;n++)// переменная I изменяется от 2 до 5 с шагом 1
y*=exp(-x)*log(x)*tan(x);("%5.10f",y);();
}
№ вар | Задание | № вар | Задание |
1 | 16 | ||
2 | 17 | ||
3 | 18 | ||
4 | 19 | ||
5 | 20 | ||
6 | 21 | ||
7 | 22 | ||
8 | 23 | ||
9 | 24 | ||
10 | 25 | ||
11 | 26 | ||
12 | 27 | ||
13 | 28 | ||
14 | 29 | ||
15 | 30 |
Инструкция цикла WHILE носит название цикла с предусловием, так как анализ конца цикла производится до выполнения операторов тела цикла. Она используется, когда количество повторений операторов цикла заранее неизвестно и определяется в процессе выполнения цикла. При определенных условиях цикл не выполняется ни разу.
Синтаксис:
while(УсловиеВыполнения)
{Инструкции цикла (тело цикла)}
Сначала проверяется значение выражения УсловиеВылолнёния. Если. условие истинно, то выполняются инструкции цикла (тело цикла). Затем снова проверяется значение выражения УсловиеВыполнения, и если оно истинно, инструкции цикла выполняются еще раз. И так до тех пор, пока значение выражения УсловиеВылолнения не станет неверным.
Задача №3b
Вычислить таблицу значений функций для значений аргумента x, который изменяется от xn до xk с шагом dx
#include <stdio.h>
#include <conio.h>
#include <math.h>main()
|
|
{xn,xk,dx,x,y;("xn="); scanf("%f",&xn);("xk="); scanf("%f",&xk);("dx="); scanf("%f",&dx);=xn; //присваиваем переменной x начальное значение
while (x<=xk)
{=pow(tan(x/2),2)*exp(-2*x)*log(fabs(x));("x=%1.1f y=%f\n",x,y);+=dx; //значение x возрастает на величину шага
}();
}
№ вар | Задание | № вар | Задание |
1 | 16 | ||
2 | 17 | ||
3 | 18 | ||
4 | 19 | ||
5 | 20 | ||
6 | 21 | ||
7 | 22 | ||
8 | 23 | ||
9 | 24 | ||
10 | 25 | ||
11 | 26 | ||
12 | 27 | ||
13 | 28 | ||
14 | 29 | ||
15 | 30 |
Цикл с постусловием do while имеет следующий синтаксис:
do{операторы цикла} while(e);
Цикл выполняется до тех пор, пока выражение e имеет значение "истина". В отличие от цикла while, в котором проверка условия окончания цикла делается до выполнения тела цикла, в цикле do такая проверка имеет место после выполнения тела цикла. Следовательно, тело цикла do будет выполнено хотя бы один раз, даже если выражение e имеет значение "ложь" c самого начала. Цикл do аналогичен циклу repeat в языке Паскаль, отличаясь от него лишь тем, что цикл repeat выполняется до тех пор, пока некоторое условие выхода из цикла не становится истинным, а цикл do выполняется все время, пока некоторое условие остается истинным!
Задача №3с
Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -100…100, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести значение наибольшего по модулю числа.
#include <stdio.h>
#include <conio.h>
#include <math.h>main()
{x,max=0;
{ printf("x="); scanf("%d",&x);(x>=-100 && x<=100 && max<abs(x)) max=x;
}(x>=-100 && x<=100);("max=%d",max);
getch();
}
Еще один пример:
Обеспечить ввод с клавиатуры последовательности из целых чисел
(диапазон от -20 до 10, конец серии - ввод нуля). После окончания ввода программа должна вывести количество положительных и четных чисел
Для определения кратности числа можно воспользоваться операцией %, которая возвращает остаток от целочисленного деления. Эта операция применима только к переменным целого типа (int). Например, 5%2==1, 4%2== 0
#include <stdio.h>
#include <conio.h>
#include <math.h>main()
{x,k;
{ printf("x="); scanf("%d",&x);(x<=10 && x>0 && x%2==0) k++;
}(x!=0);("k=%d",k);();
}
№ вар | Задание | № вар | Задание |
1 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -8…18, конец серии - после ввода нуля). После окончания ввода программа должна вывести значение наименьшего положительного числа, кратного 3. | 16 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -27…27, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести количество отрицательных четных введенных чисел. |
2 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -14…18, конец серии - после ввода нуля). После окончания ввода программа должна вывести среднее значение положительных чисел | 17 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -24…24, конец серии - после ввода нуля). После окончания ввода программа должна вывести среднее значение отрицательных четных чисел |
3 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -38…18, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести количество положительных введенных чисел. | 18 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -25…25, конец серии - после ввода нуля). После окончания ввода программа должна вывести значение наименьшего положительного четного числа. |
4 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -21…21, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести значение наименьшего положительного четного числа. | 19 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -38…18, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести среднее арифметическое положительных введенных чисел. |
5 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -29…29, конец серии - ввод нуля). После окончания ввода программа должна вывести количество четных чисел. | 20 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -12…12, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести произведение положительных четных чисел. |
6 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -25…25, конец серии - ввод нуля). После окончания ввода программа должна вывести значение наименьшего по модулю четного числа. | 21 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -31…31, конец серии - ввод нуля). После окончания ввода программа должна вывести значение набольшего отрицательного кратного 3 числа. |
7 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -30…30, конец серии - после ввода нуля). После окончания ввода программа должна вывести количество отрицательных, кратных 3 чисел | 22 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -24…24, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести сумму положительных нечетных чисел. |
8 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -50…50, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести значение наибольшего по модулю числа. | 23 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -40…40, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести среднее арифметическое всех чисел, кратных 5. |
9 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -27…27, конец серии - ввод нуля). После окончания ввода программа должна вывести количество четных и кратных 3 чисел. | 24 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -29…29, конец серии - ввод нуля). После окончания ввода программа должна вывести количество отрицательных кратных 3 чисел. |
10 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -17…17, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести среднее арифметическое модулей отрицательных чисел. | 25 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -17…17, конец серии - ввод нуля). После окончания ввода программа должна вывести количество чисел кратных 3. |
11 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -14…14, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести сумму отрицательных четных чисел. | 26 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -45…45, конец серии - ввод нуля). После окончания ввода программа должна вывести значение наибольшего по модулю числа, кратного 3. |
12 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -55…55, конец серии - после ввод числа вне диапазона). После окончания ввода программа должна вывести среднее арифметическое чисел, кратных 4 | 27 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -18…8, конец серии - после ввода нуля). После окончания ввода программа должна вывести значение наибольшего отрицательного числа, кратного 3. |
13 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -45…45, конец серии - после ввода нуля). После окончания ввода программа должна вывести значение наименьшего из отрицательных нечетных чисел | 28 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -55…24, конец серии - после ввода нуля). После окончания ввода программа должна вывести значение наибольшего из отрицательных четных чисел |
14 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -34…34, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести наибольшее из отрицательных кратных 3 чисел. | 29 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -27…27, конец серии - ввод числа вне диапазона). После окончания ввода программа должна вывести количество отрицательных кратных 4 введенных чисел. |
15 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -19…19, конец серии - ввод нуля). После окончания ввода программа должна вывести произведение отрицательных кратных 3 чисел. | 30 | Обеспечить ввод с клавиатуры последовательности из целых чисел (диапазон -30…30, конец серии - после ввода нуля). После окончания ввода программа должна вывести сумму отрицательных, кратных 3 чисел |
|
|
|
|