Условная трехместная операция
Условная тернарная операция используется с тремя операндами. В изображении условной операции применяются два символа ‘?’ и ‘:’ и три выражения – операнда:
выражение_1 ? выражение_2 : выражение_3;
Первым вычисляется значение выражения_1. Если оно истинно, т. е. не равно 0, то вычисляется значение выражения_2, которое становится результатом. Если при вычислении выражения_1 получится 0, то в качестве результата берётся значение выражения_3, например:
x<0 ? –x : x;
Выражение возвращает абсолютную величину переменной x.
Пример программы вычисления наибольшего из значений функции y1=x²+1, y2=7-x² , y3=x+1 для любого х.
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{ float x,y1,y2,y3,max;
printf("Input x "); scanf("%f",&x);
y1=x*x+1; y2=7-x*x; y3=x+1;
y1>y2? max=y1:max=y2;
y3>max? max=y3:max=max;
printf ("x=%8.2f y1=%8.2f y2=%8.2f y3=%8.2f max=%8.2f\n",x,y1,y2,y3,max);
system("PAUSE");
return EXIT_SUCCESS;
}
Множественный выбор
В программах с множественным выбором используется переключатель switch , который сравнивает значение выражения, указанного за ним, и выполняет один из операторов, метка которого совпадает с этим значением. Общий вид:
Switch (выражение)
{ case метка_1: список_операторов_1;
……………………………………….
case метка_n: список_операторов_n;
default : операторы; }
Значения выражения и меток должны быть целочисленными константами.
Например, определим количество дней по введенному номеру месяца.
|
|
//lab2_2 множественный выбор
#include<stdio.h>
#include<conio.h> // Заголовочный файл для работы с терминалом
int m;
main()
{
printf("\n Введите номер месяца :"); scanf("%d",&m);
printf("\n В %4d месяце дней: ",m);
switch(m){
case 1:case 3:case 5: case 7:case 8:case 10:case 12:printf("тридцать один\n");break;
case 2: printf ("двадцать восемь \n");break;
case 4: case 6: case 9: case 11: printf("тридцать\n");break;
default: printf("\n Номер месяца неверен \n");}
getch (); }
В примере программы, если номер месяца превышает 12, выводится сообщение о неверном вводе месяца, для чего используется default. Оператор break служит для прерывания цикла проверки и перехода в конец переключателя. В случае отсутствия break, происходит переход на следующую ветвь.
Функция getch, подключающаяся заголовочным файлом conio.h, ожидает нажатия любой клавиши. Это позволяет просмотреть результаты, не используя ALT+F5 для просмотра экрана пользователя.
ВЫПОЛНЕНИЕ РАБОТЫ
Составить программы разветвляющейся структуры согласно вариантам задания 1 (используя IF) и задания 2 (используя SWITCH) .
Варианты задания 1
1) Даны четыре числа. На сколько их сумма меньше их произведения?
2) Даны четыре числа. Вычислить сумму положительных среди них чисел.
|
|
3) Даны четыре числа. Вычислить произведение отрицательных среди них чисел.
4) Даны четыре числа. Все отрицательные среди них числа заменить на 0.
5) Даны четыре числа. Определить сколько среди них отрицательных и сколько положительных.
6) Даны четыре числа. Определить порядковый номер наименьшего среди них.
7) Даны два числа. Большее из этих двух чисел заменить их полусуммой, а меньшее удвоенным произведением.
8) Даны три числа. Меньшее среди них заменить на 0 .
9) Даны четыре числа. Найти разность между наибольшим и наименьшим среди них.
10) Даны три числа K, M и N. Поменять их значения местами таким образом, чтобы K < M < N.
11) Даны четыре разных числа. Найти среди них два наибольших.
12) Даны три числа. Поменять местами большее и меньшее из этих чисел.
Варианты задания 2
Предусмотреть ситуацию неправильного ввода исходных данных.
1) Вводится число программ N<=20. Напечатать фразу "Я разработал N программ", согласовав слово "программа" с числом N.
2) Вводится число экзаменов N<=20. Напечатать фразу "Мы успешно сдали N экзаменов", согласовав слово "экзамен" с числом N.
3) Вводится число лет (N<=25). Напечатать фразу "Мне N лет", согласовав слово "лет, год, года" с числом N.
|
|
4) Вводится число студентов N<=30. Вывести фразу "В нашей группе N студентов", согласовав слово "студент" с числом N.
5) Вводится число М - номер месяца. Определить номер квартала по введенному номеру месяца и номер полугодия.
6) Вводится число М - номер месяца. Определить время года по введенному номеру месяца и номер полугодия.
7) Вводится целое число С. Если -9<=c<=9 вывести величину числа в словесной форме с учетом знака, в противном случае - предупреждающее сообщение и повторный ввод.
8) Вводится номер семестра N<=10. Вывести фразу "Я проучился N семестров", согласовав слово "семестр" с числом N. Определить номер курса.
9) В китайском гороскопе года носят следующие названия: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна, петух, собака, свинья. Учитывая, что 1996 – год крысы, написать программу, определяющую название года по его номеру.
10) Вводится число Т – порядковый день в году. Определить номер месяца М и дня недели D, соответствующих Т.(Например, если Т=365 . то М=12, а D=31)
11) Вводится номер месяца М и дня D. Определить порядковый номер дня в году Т соответсвующий этой дате.
12) Вводится номер месяца М и дня D. Определить день недели с датой М и D, считая, что год начинается с понедельника.
|
|
КОНТРОЛЬНЫЕ ВОПРОСЫ
4.1. Сравните виды условных операторов Си.
4.2. Всегда ли ставятся скобки и какие в условном операторе?
4.3. Зачем ставятся в переключателе операторы break и default?
4.4. Как будет работать программа из примера без break?
Лабораторная работа №3
Дата добавления: 2019-01-14; просмотров: 293; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!