Задание 2. Операторы цикла while, do while, for.




Задание 1. Операторы условия if и выбора switch.

Оператор ветвления if else [1, с.18] предназначен для выбора одного из вариантов выполнения действий в зависимости от каких-либо условий. Условие – это логическое выражение, результат вычисления которого логическое значение true (истина, да) или false (ложь, нет)).

Для объединения нескольких условий используются операции И (&&) и ИЛИ (||) [1, с.15]. Например, условие вхождения переменной а в диапазон (0,5] будет иметь вид:

а>0 && a<=5.

Условие, по которому переменная а не входит в диапазон [0,5) будет иметь вид:

а<0 || a>=5.

Оператор выбора switch [1, с. 19] предназначен для выполнения определенных действий в зависимости от значения выражения (ключевой переменной). Ключевая переменная должна быть целого типа (int) или символьного типа (char). Метки после оператора case могут быть описаны как числа, коды символов, или как символьные константы. Например:

...

switch (pr)

{case 112:...

case ‘f’:...

...

default: …}


Пример 1: определить, принадлежит ли значение х диапазону (5, 7].

//Решение

#include <stdio.h>

#include <conio.h>

//Подключение библиотек

int main (int argc, char * argv[])

{

int x; //Объявление переменной x целого типа

 

printf ("Введите значение х:"); //вывод на экран приглашения

scanf ("%d",&x); //ввод значения х

 

if ((x>5) && (x<=7))

//Если 5 < x и x <= 7, то…

printf ("x входит в диапазон (5,7]"); //Вывод сообщения

Else

//иначе…

printf ("x не входит в диапазон (5,7]"); //Вывод сообщения

getche ();

//Ожидание нажатия любой клавиши

return 0;

}

 

Пример 2: Дан номер месяца (1 — январь, 2 — февраль,...). Вывести название соответствующего времени года ("зима", "весна" и т.д.).

 

/Решение

#include <stdio.h>

#include <conio.h>

//Подключение библиотек

int main(int argc, char * argv[])

{

int y; /*Объявление переменной y целого типа для хранения номера месяца*/

 

printf ("\n Введите номер месяца:");

//вывод приглашения

scanf ("%d",&y);

//ввод значения y (номера месяца)

 

switch (y)

{

case 12:

case 1:

case 2: printf ("\n зима"); //Если y = 1, 2 или 12 то

//вывод строки с описанием времени года

break; //прерывание оператора switch

case 3:

case 4:

case 5: printf ("\n весна"); //Если y = 3, 4 или 5 то

//Вывод строки с описанием времени года

break; //прерывание оператора switch

case 6:

case 7:

case 8: printf ("\n лето"); //Если y = 6, 7 или 8 то

//Вывод строки с описанием времени года

break; //прерывание оператора switch

case 9:

case 10:

case 11: printf ("\n осень"); //Если y = 9, 10 или 11 то

//Вывод строки с описанием времени года

break; //прерывание оператора switch

default: printf ("Такого месяца не существует!");

//Если нет совпадений,

//то вывод строки с сообщением об ошибке

}

 

getche ();

//Ожидание нажатия любой клавиши

 

return 0;

}


Задания

№ вар. Задание
1. Ввести 2 числа А и В. Если В не равно 0, то А разделить на В и вывести результат, иначе вывести сообщение об ошибке.
2. Дано целое число в диапазоне 0 – 4. Вывести строку — название соответствующей цифры на русском языке (0 — "ноль", 1 — "один", 2 — "два",...).
3. Ввести 2 числа А и В. Если оба числа входят в интервал [0; 5), то вывести сообщение «Ок!», иначе вывести сообщение «ошибка!».
4. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — "плохо", 2 — "неудовлетворительно", 3 — "удовлетворительно", 4 — "хорошо", 5 — "отлично").
5. Ввести 2 числа А и В. Если оба числа не входят в интервал [0; 5), то вывести сообщение «Ок!», иначе вывести сообщение «ошибка!».
6. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Ввести номер действия и два числа A и B (В не равно нулю). Выполнить над числами указанное действие и вывести результат.
7. Ввести 2 числа А и В. Если хотя бы одно из чисел входит в интервал [0; 5), то вывести сообщение «Ок!», иначе вывести сообщение «ошибка!».
8. Единицы длины пронумерованы следующим образом: 1 — сантиметр, 2 — километр, 3 — миллиметр. Ввести номер единицы длины и длину отрезка L в этих единицах (вещественное число). Вывести длину данного отрезка в метрах.
9. Ввести 2 числа А и В. Если А входит в интервал [0; 5), а В – не входит, то вывести сообщение «Ок!», иначе вывести сообщение «ошибка!».
10. Единицы массы пронумерованы следующим образом: 1 — грамм, 2 — тонна, 3 — центнер. Ввести номер единицы массы и массу тела M в этих единицах (вещественное число). Вывести массу данного тела в килограммах.
11. Ввести 2 числа А и В. Если оба числа входят в интервал [0; 5), то вывести сообщение «Ок!», иначе вывести сообщение «ошибка!».
12. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 — катет, 2 — гипотенуза, 3 — площадь. Ввести номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника.
13. Ввести целое число В. Если В положительное и нечетное, то возвести его в 3 степень, иначе возвести в квадрат.
14. Элементы равностороннего треугольника пронумерованы следующим образом: 1 — сторона, 2 — радиус вписанной окружности, 3 — радиус описанной окружности. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника.
15. Ввести целое число В. Если В отрицательное и четное, то возвести его в 3 степень, иначе возвести в квадрат.
16. Катеты, гипотенуза и площадь прямоугольного треугольника обозначаются буквами a, b и S соответственно. Вывести описание вида «катет», «гипотенуза» при вводе соответствующего символа.
17. Ввести координаты точки X и Y. Если точка лежит на какой либо из осей координат, вывести сообщение «Ок!», иначе вывести сообщение «No!».
18. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.
19. Ввести координаты точки X и Y. Если точка лежит в начале координат, вывести сообщение «Ок!», иначе вывести сообщение «No!».
20. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной.

 


Задание 2. Операторы цикла while, do while, for.

Для организации циклов используются операторы for, while, do while [1, с. 20].

Операторы цикла организуют многократное повторение какого либо набора действий или одного действия.

Повторение может производиться определенное число раз (оператор for), при этом количество повторений определяется значением специальной переменной–счетчика. Как только оно превысит установленный предел, произойдет выход из цикла. Кроме того, значение счетчика можно использовать в программе как внутри цикла, так и по его завершению.

Также повторение может производиться при выполнении некоторого условия (операторы while и do while). При этом необходимо, чтобы внутри цикла формировались такие значения параметров, входящих в условие, что бы оно становилось ложным через определенное число повторений, в противном случае произойдет зацикливание.

Цикл с предусловием (оператор while) может не выполниться ни разу, если условие сразу ложно. Цикл с постусловием (оператор do while) выполнится хотя бы один раз независимо от ложности или истинности условия.

Оператор for часто используют при работе с массивами: вводом-выводом данных в массив, сортировкой, поиском по массиву, построением графика по набору данных из массива и др. При этом значение счетчика используется в качестве индекса (номера ячейки в массиве). Для двумерных массивов используют вложенные операторы for. Счетчик внешнего цикла обычно используют для индексирования строк, а внутреннего – для индексирования элементов в строке.

Операторы while и do while используют в случае, когда количество повторений неизвестно. Например, при вводе последовательностей данных с неопределенным их количеством, работе со строками (повторять, пока не достигнут конец строки – символ ‘\0’) и файлами (повторять, пока не достигнут конец файла – функция feof() вернет 1 [1, с. 27]), вводе данных с проверкой их значения и организацией повторного ввода при необходимости, повторением различных программ по запросу пользователя и т.п..

 

Пример 1: вывести все целые числа, расположенные между А и В в обратном порядке не включая сами эти числа.

 

#include <conio.h>

#include <stdio.h>

//Подключаем библиотеки

int main (int argc, char * argv[])

{

int i, A, B;

//Объявление переменных целого типа

 

 

printf ("Введите А и В:\n");

//Вывод приглашения

scanf ("%d\n", &A);

scanf ("%d", &B);

//Ввод А и В

 

 

for (i = B-1; i>A; i = i - 1) /*Начало цикла:

(изменяем значение счетчика i от В - 1 до А с шагом -1)*/

{

printf ("\n %d", i); //Тело цикла

//(вывод текущего значения счетчика)

}//Конец цикла

 

getche ();

/*Ожидание нажатия любой клавиши

для завершения программы*/

 

return 0;

//Конец программы

}

 


Пример 2: Найти сумму ряда y = Σ(x/xn), где х > 1, с точностью 0,01.

 

#include <conio.h>

#include <stdio.h>

#include <math.h> //Математическая библиотека

//Подключаем библиотеки

int main (int argc, char * argv[])

{

float sum = 0, x, tmp;

int n = 1;

//Объявление переменных вещественного и целого типа.

 

printf ("Введите X:"); //Печать приглашения.

scanf ("%f", &x); //Ввод значения Х.

 

do { // Начало цикла.

tmp = x / pow (x, n); //Расчет очередного элемента ряда…

sum = sum + tmp; //… и добавление его к сумме.

n = n + 1; //Увеличение параметра n на 1.

} while (tmp > 0.01);

//Если значение элемента > 0,01, повторить сначала.

//Конец цикла

 

printf ("Сумма ряда равна %f", sum); //Вывод результата

 

getche ();

/*Ожидание нажатия любой клавиши

для завершения программы*/

 

return 0;

//Конец программы

}

 


Пример 3: Дан массив целых чисел, содержащий 0. Вывести частные от деления числа π на каждый элемент массива до элемента со значением 0.

 

#include <conio.h>

#include <stdio.h>

#include <math.h> //Математическая библиотека

//Подключаем библиотеки

int main (int argc, char * argv[])

{

int mas[10] = {5, 7, 9, 4, 12, 3, 0, 1, 6, 2}, i; //*

//Объявление массива и переменной i целого типа.

i = 0;

//Начало цикла

while (mas[i]!= 0)

//Пока i-й элемент массива не равен 0, повторять цикл.

{

printf ("\n Частное = %f", mas[i] / M_PI); //**

//Вывод на экран результата

i++; // Увеличение i на 1.

}

//Конец цикла.

 

getche ();

/*Ожидание нажатия любой клавиши

для завершения программы*/

 

return 0;

//Конец программы

}

 

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

** M_PI – стандартная константа, значение которой равно π.

 

Задания

№ вар. Задание
1. Ввести вещественное число A и целое число N (> 0). Вывести A в степени N: AN = A·A·...·A (число A перемножается N раз).
2. Ввести вещественное число A и целое число N (> 0). Вывести 1 + A + A2 + A3 +... + AN.
3. Ввести вещественное число A и целое число N (> 0). Вывести 1 – A + A2 – A3 +... + (–1)NAN.
4. Ввести целое число N (> 1). Вывести наименьшее целое K, при котором выполняется неравенство 3K > N, и само значение 3K.
5. Ввести вещественное число A (> 1). Вывести наибольшее из целых чисел N, для которых сумма 1 + 1/2 +... + 1/N будет меньше A, и саму эту сумму.
6. Ввести вещественное число X (|X| < 1) и целое число N (> 0). Вывести X – X3/3 + X5/5 –... + (–1)NX2N+1/(2N+1).
7. Ввести целое число N (> 2) и две вещественные точки на числовой оси: A, B (A < B). Разбить отрезок [A, B] на N равных отрезков. Найти и вывести длину H полученных отрезков и координаты их концов A, A + H, A + 2H, A + 3H,..., B.
8. Дан массив целых чисел*, содержащий 0. Вывести произведение всех элементов массива до элемента со значением 0.
9. Ввести вещественное число Х > 1. Найти сумму ряда 1+2X / X2 - 3X / X3+ … +(-1)N N X / XN с точностью 0,001.
10. Дан массив целых чисел*. Вывести все отрицательные элементы массива.

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

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: