- •Лабораторная работа №1 Линейные и разветвленные программы
- •Примеры использования арифметических операций
- •Примеры использования операций инкремента и декремента
- •Примеры использования операций отношения
- •Примеры использования поразрядных логических операций: Поразрядное логическое умножение:
- •Логический сдвиг:
- •Поразрядное логическое сложение:
- •Сложение по модулю 2 (исключающее или):
- •Примеры более сложного использования поразрядных логических операций:
- •Примеры записи логических выражений:
- •Алгебраические выражения
- •Пример вычисления значения выражения
- •Примеры использования преобразования типов
- •2. Особенности преобразования типов int и double:
- •6. Приведение типа в случае использования указателей:
- •7. Преобразование старшего типа к младшему удобно использовать для выделения отдельных частей переменной или константы:
- •9. Проанализируйте преобразование типов в операторах присваивания:
- •Особенности представления чисел по двоичному основанию
- •Особенности выполнения арифметических операций над вещественными числами
- •Операции умножения и деления
- •Ошибки округления
- •Переполнение (ошибка переполнения)
- •Потеря порядка (ошибка исчезновения порядка)
- •Катастрофическая потеря порядка (ошибка потери порядка)
- •Операции сложения и вычитания
- •Переполнение (ошибка переполнения)
- •Потеря значащих цифр
- •Особенности выполнения операций отношения (сравнения)
- •Правила работы с данными вещественных типов
- •Замечания по программированию алгебраических выражений
- •Условный оператор
- •Оператор switch Пример 1. Печать событий в зависимости от года
- •Пример 2. Распознавание вводимых символов
- •Пример 3. Печать сообщений о работе программы
- •Пример 4. Селектор перечислимого типа
Лабораторная работа №1 Линейные и разветвленные программы
(для выполнения лабораторной работы №1 необходимо проработать материал лекций №№ 1-4 и разобрать примеры, приведенные в отдельном файле и в данной методичке)
Примеры использования арифметических операций 1
Примеры использования операций инкремента и декремента 2
Примеры использования операций отношения 3
Примеры использования поразрядных логических операций: 3
Поразрядное логическое умножение: 3
Логический сдвиг: 4
Поразрядное логическое сложение: 4
Сложение по модулю 2 (исключающее или): 4
Примеры более сложного использования поразрядных логических операций: 4
Примеры записи логических выражений: 7
Алгебраические выражения 10
Пример вычисления значения выражения 14
Примеры использования преобразования типов 15
Особенности представления чисел по двоичному основанию 19
Особенности выполнения арифметических операций над вещественными числами 19
Правила работы с данными вещественных типов 23
Замечания по программированию алгебраических выражений 24
Условный оператор 25
Оператор switch 26
Примеры использования арифметических операций
1. Операции целочисленного деления и нахождения остатка целочисленного деления применяются при необходимости выделения цифр целого числа.
Например, дано четырехзначное натуральное n (abcd). Верно ли, что это число содержит более двух одинаковых цифр?
#include <stdio.h>
#include <conio.h>
int main()
{ int n, a, b, c, d;
printf ("input n(abcd):\n");
scanf ("%i", &n);
d = n % 10;
c = n / 10 % 10;
b = n / 100 % 10;
a = n / 1000;
if (int (a == b) + int (a == c) + int (a==d) + int (b==c) + int (b==d) + int (c==d) > 1 ) printf ("> 2\n");
else printf ("<=2\n");
_getch();
return 0;
}
2. Операции целочисленного деления и нахождения остатка целочисленного деления применяются при необходимости выделения цифр дробной части вещественного числа.
Например, определить, есть ли среди первых двух цифр дробной части заданного положительного вещественного числа x=ab.cd, цифра 7.
#include <stdio.h>
#include <conio.h>
int main()
{double x;
int ix, c, d;
printf (" input x(ab.cd):\n");
scanf ("%lf", &x);
ix= static_cast<int>(x*100); //приведение типа double к int
d = ix % 10;
c = ix /10 % 10;
if ((c==7) || (d==7))
printf ("yes\n");
else printf ("no\n");
_getch();
return 0;
}
Примеры использования операций инкремента и декремента
1. . int i=2, j=0;
i++;
cout << i << endl; // 3
--i;
cout << i << endl; // 2
-
#include <iostream.h>
#include <conio.h>
int main()
{ float x=2;
x=++x*4; cout << x << endl; // 12
x=2;
x=x++*4; cout << x << endl; // 9
x=2;
x=--x*4; cout << x << endl; // 4
x=2;
x=x--*4; cout << x << endl; // 7
_getch();
return 0;
}
3 #include <iostream.h>
#include <conio.h>
int main()
{
int var = 10;
cout << var << endl; // 10
var *= 2; // 20
cout << var-- << endl; // 20
cout << var << endl; // 19
_getch();
return 0;
}
4. При вычислении выражения k = a + (i++) – d * (--j) операции выполняются в следующей последовательности:
--j; k=a + i – d * j; i = i++;