Принятие решений. Условные операторы в языке С
Задание 2
- Добавьте в программу преобразование типов при использовании функции sqrt().
- В программе предусмотрите вычисление комплексных и мнимых корней квадратного уравнения.
- Предусмотрите ввод целочисленных коэффициентов квадратного уравнения, используя тип int. В отчет вставьте возможный результат выполнения программы.
- Напишите программу ввода вещественных чисел и вывода абсолютного значения этого числа на основе конструкции if–else.
Пример 3. Напишите программу классификации введенного с терминала символа на основе конструкции if–else if–else [4.1].
Символы (одиночные) будем считать как строчные и прописные буквы латинского алфавита, цифры от 0 до 9, и специальные символы.
Программный код решения примера:
#include <stdio.h>
#include <conio.h>
int main(void) {
char c;
// Ввод одиночного символа
printf("\n\t Enter a single character: ");
scanf_s("%c", &c);
if ( c >= 'a' && c <= 'z' )
printf("\n\t This is a small letter\n");
else if ( c >= 'A' && c <= 'Z')
printf("\n\t This is a capital letter\n");
else if ( c >= '0' && c <= '9')
printf("\n\t This figure (digit)\n");
else
printf("\n\t This is a special character\n");
printf("\n Press any key: ");
_getch();
return 0;
}Результат выполнения программы показан на рис. 4.3.
Задание 3
- Сформируйте одно условие ввода букв как прописных, так и строчных с последующим выводом: This is an alphabetic character.
- Напишите программу циклического ввода символов и вывода результата их классификации до момента нажатия цифры 10*Х, где Х – номер компьютера, за которым выполняется лабораторная работа.
- Напишите программу решения квадратного уравнения с применением конструкций if–else if–else.
Пример 4. Напишите программу расчета простого арифметического выражения на основе оператора switch.
Программный код решения примера:
#include <stdio.h>
#include <conio.h>
int main (void) {
float value1, value2;
char operat;
printf("\n\t Printed on the keyboard expression: ");
scanf_s("%f%c%f", &value1, &operat, sizeof(char), &value2);
switch (operat) {
case '+':
printf("\n\t Result: %1.4f\n", value1 + value2);
break;
case '-':
printf("\n\t Result: %1.4f\n", value1 - value2);
break;
case '*':
printf("\n\t Result: %1.4f\n", value1 * value2);
break;
case '/':
if (value2 == 0.0)
printf("\n\t Division by zero.\n");
else
printf("\n\t Result: %1.4f\n", value1 / value2);
break;
default:
printf("\n\t Unknown arithmetic operator\n\t error or enter a number. Break!\n");
break;
} // End switch
printf("\n Press any key: ");
_getch();
return 0;
}В программе использована полная форма оператора switch. Оператор break инициирует немедленный выход из оператора switch. Возможно использование вложенных операторов switch.
Возможный результат выполнения программы показан на рис. 4.4.
Задание 4
- Проверьте деление числа на нуль и ввода недопустимого символа.
- Примените условие равенства нулю вводимого числа без знака "==".
- Напишите программу расчета простого выражения с помощью конструкций if–else if–else.
- Напишите программу деления суток на "Morning" (утро), "Day" (день), "Afternoon" (послеобеденное время), "Evening" (вечер), "Night" (ночь). Время ввода задается пользователем с клавиатуры.
Пример 5. Напишите программу вычисления двух целых случайных чисел и определения наибольшего из них. Определение наибольшего числа произведите с помощью оператора условия ?
Программный код решения примера:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> // Для функций случайных чисел
#include <time.h>
int main (void) {
int a, b, maxab;
unsigned int some;
long int L;
L = (long) time(NULL);
some = (unsigned) L/2;
srand(some);
a = rand();
b = rand();
printf("\n\t Random numbers: a = %d; b = %d\n", a, b);
// Оператор условия для определения максимального числа
maxab = (a > b) ? a : b;
printf("\n\t Maximum number: %d\n", maxab);
printf("\n Press any key: ");
_getch();
return 0;
}В программе использованы функции генерации псевдослучайных чисел rand() и задания исходного псевдослучайного числа srand(). Указанные функции входят в стандартную библиотечную функцию stdlib.h. Функция time() входит в библиотечную функцию time.h, которая поддерживает функции, обращающиеся к системному времени.
Для переменных L и some выполнено приведение типов.
При каждом обращении к функции rand() возвращается целое в интервале между нулем и значением RAND_MAX, которое в любой реализации должно быть не меньше числа 32 767 [4.2]
Возможный результат выполнения программы показан на рис. 4.5.


