Опубликован: 14.12.2010 | Уровень: для всех | Доступ: платный
Лекция 5:

Принятие решений. Условные операторы в языке С

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Задание 2

  1. Добавьте в программу преобразование типов при использовании функции sqrt().
  2. В программе предусмотрите вычисление комплексных и мнимых корней квадратного уравнения.
  3. Предусмотрите ввод целочисленных коэффициентов квадратного уравнения, используя тип int. В отчет вставьте возможный результат выполнения программы.
  4. Напишите программу ввода вещественных чисел и вывода абсолютного значения этого числа на основе конструкции 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.

Результат классификации символа

Рис. 4.3. Результат классификации символа

Задание 3

  1. Сформируйте одно условие ввода букв как прописных, так и строчных с последующим выводом: This is an alphabetic character.
  2. Напишите программу циклического ввода символов и вывода результата их классификации до момента нажатия цифры 10*Х, где Х – номер компьютера, за которым выполняется лабораторная работа.
  3. Напишите программу решения квадратного уравнения с применением конструкций 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.4. Расчет простого арифметического выражения

Задание 4

  1. Проверьте деление числа на нуль и ввода недопустимого символа.
  2. Примените условие равенства нулю вводимого числа без знака "==".
  3. Напишите программу расчета простого выражения с помощью конструкций if–else if–else.
  4. Напишите программу деления суток на "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.

Результат определения максимального числа

Рис. 4.5. Результат определения максимального числа
< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Мухаммадюсуф Курбонов
Мухаммадюсуф Курбонов
Александр Соболев
Александр Соболев
Россия
Артем Полутин
Артем Полутин
Россия, Саранск