|
Тема: типы данных. Обработка числовой информации ⇐ ПредыдущаяСтр 2 из 2 В языке Си используются данные пяти типов: · символы - тип char, · целые числа - тип int, · числа с плавающей точкой - тип float, · числа с плавающей точкой двойной точности - тип double, · переменные без значения - тип void. Функция printf () используется для вывода информации: printf ( ("управляющая строка", список аргументов); Число аргументов должно соответствовать числу спецификаторов формата. Общий вид спецификаторов формата %[флаг][ширина][.точность][префикс] код формата Код формата может принимать следующие значения: %c отдельный символ %d десятичное %i десятичное %e научная нотация %f десятичное с плавающей точкой %g использует %e или %f (какой короче) %o восьмиричное %s цепочка символов %u десятичное без знака %x шестнадцатиричное %% печатает знак % %p визуализирует указатель Флаг (в таком порядке): - Выравнивание по левому краю (по умолчанию – по правому) + Печать знака, если аргумент знакового типа («-» печатается всегда, «+», если указан флаг, иначе пробел) # Для форматов «о» и «х» печать лидирующих 0 или 0х. Ширина – неотрицательное целое число, определяет минимальный размер поля, отводимое для печати (если знаков больше, то поле печати будет расширено). Точность – неотрицательное целое число, определяет число цифр, печатаемых после десятичной точки для данных типа float, double (по умолчанию 6 знаков). Префикс – используется для указания, что аргументы short – h или long – l: %ld – длинное целое, %lf - длинное double. Функция scanf() используется для ввода информации: scanf("управляющая строка", список аргументов); Все переменные, используемые для приема значений посредством функции scanf(), должны передаваться их адресами. Задание 1. Распечатать введенные с клавиатуры символы и соответствующие им ASCII - коды в десятичном, восьмеричном и шестнадцатеричном виде. Задание 2. Форматированный ввод - вывод. Используя допустимые спецификации преобразования, распечатать символ, целое (знаковое и беззнаковое), числа с плавающей точкой. Тема: операции Программы на языке Си строятся из операторов, операторы - из выражений, выражения - из операндов и операций. В языке Си имеется три основных класса операторов: · арифметические; · логические; · операторы сравнения и побитовые операторы. Арифметические операции (операнды - числа или указатели). Аддитивные
Мультипликативные
Увеличения (increment) и уменьшения (decrement)
Операции присваивания
Условие (тернарная операция)
Логические операции
Поразрядные операции (побитовые) Логические
Сдвиг
Операции сравнения Отношения
Сравнение на равенство.
Адресные операции.
В языке Си операции выполняются в очередности, определяемой их приоритетом. Таблица приоритетов.
Задание 3. Что напечатает следующая программа? main() { //основные арифметические операции int x, y, z; x = - 3 + 4 * 5 - 6; printf ("%d\n",x); x = 3 + 4 % 5 - 6; printf ("%d\n",x); x = - 3 + 4 % 5 - 6 /5; printf ("%d\n",x); x = (6 + 7) % 5 / 6; printf ("%d\n",x); //операции присваивания x=2; x *= 3 + 2; printf ("%d\n",x); x *= y = z = 4; printf ("%d\n",x); x = y = = z; printf ("%d\n",x); x = = (y = z); printf ("%d\n",x); //логические операции и операции увеличения x = 2; y = 1; z = 0; x = x && y || z; printf ("%d\n",x); x = x ||! y && z; printf ("%d\n",x); x = y = 1; z = x ++ - 1; printf ("%d %d\n",x, z); z += - x ++ + ++ y; printf ("%d %d\n",x, z); z = x / ++ x; printf ("%d %d\n",x, z); //побитовые операции x = 03; y = 02; z = 01; printf ("%d\n", x | y & z); printf ("%d\n", x | y & ~ z); printf ("%d\n", x ^ y & ~ z); printf ("%d\n", x & y && z); x = 1; y = - 1; printf ("%d\n",! x | x); printf ("%d\n", ~ x | x); printf ("%d\n", x ^ x); x <<=3; printf ("%d\n", x); y <<=3; printf ("%d\n", y); y >>=3; printf ("%d\n", y); //отношения и условия x = y = z = 1; x += y += z; printf ("%d\n", x < y? y: x); printf ("%d\n", x < y? x ++: y ++); printf ("%d %d\n", x, y); printf ("%d\n", z += x < y? x ++: y ++); printf ("%d %d\n", z, y); x = 3; y = z = 4; printf ("%d\n", (z >= y >= x)? 1: 0); printf ("%d\n", z && y >= x); //выполнение операций и их приоритеты int res; x = y = z = 1; res = ++x || ++y && ++z; printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res); x = y = z = 1; res = ++x && ++y || ++z; printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res); x = y = z = -1; res = ++x || ++y && ++z; printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res); x = y = z = -1; res = ++x && ++y || ++z; printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res); x = y = z = -1; res = ++x && ++y && ++z; printf ("x=%d\t y=%d\t z=%d\t res=%d\n", x, y, z, res); Тема: преобразование типов · неявное преобразование (выполняет компилятор) Результат любого вычисления будет преобразовываться к наиболее точному типу данных, из тех типов данных, которые участвуют ввычислении. · явное преобразование (выполняет программист) Для явного приведения типов имя типа указывается в круглых скобках перед переменной или выражением. Задание 4. "Вечный календарь". Даны натуральные числа d, m, g, которые обозначают число, месяц и год. Определить день недели на который падает введенная дата. Замечание. Дата должна находиться в диапазоне от 1582 до 4902 гг. Номер дня недели (воскресенье - 0, понедельник - 1,..., суббота - 6) равен остатку от деления на 7 значения выражения [ 2.6 * m - 0.2] + d + y + [y / 4] + [x / 4] - 2 * x. Если полученное значение будет отрицательным, для получения истинного значения необходимо прибавить 7. d - номер дня в месяце (1, 2,...); m - номер месяца, нумерация начинается с марта (март - 1, апрель - 2,..., декабрь - 10, январь и февраль считаются месяцами с номерами 11 и 12 предыдущего года; y - две младшие цифры года; x - две старшие цифры года; [a] - целая часть а. ![]() ![]() Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ![]() Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... ![]() Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... ![]() Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|