Принятие решений. Условные операторы в языке С
Задание 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.