Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Базовые типы данных языка Си



В языке Си определены следующие простейшие, или базовые, типы данных:

char - символьный тип;

int - целочисленный тип;

float - тип данных с плавающей точкой;

double - тип данных с плавающей точкой и повышенной точностью.

Кроме того, при описании переменных могут использоваться специальные ключевые слова (модификаторы), изменяющие некоторые свойства базовых типов. Можно выделить две группы модификаторов:

модификаторы знака signed (знаковое) и unsigned (беззнаковое);

модификаторы длины short (короткое) и long (длинное). Любой из этих модификаторов может быть применен с базовым

типом int. Модификаторы знака signed и unsigned могут быть также применены с базовым типом char. Модификатор long может применяться с базовым типом double.

Функции printf и scanf

Функции printf и scanf обеспечивают соответственно форматированный вывод и ввод информации. Рассмотрим функцию printf более подробно.

Общее описание функции printf выглядит следующим образом: printf (Управляющаястрока, аргумент1, аргумент2,..., );

Аргумент1, аргумент2 и т.д. - это параметры, которые могут быть переменными, константами, выражениями, вычисляемыми перед выводом информации.

Управляющая_строка - это строка символов, заключенных между кавычками. В состав этой строки могут входить спецификаторы форматов, поэтому строка называется форматной строкой. Спецификатор формата - это шаблон, на место которого при выводе строки на экран будет подставлено конкретное значение, принадлежащее тому или иному типу данных. Спецификатор формата определяет, как будет отображено это значение.

При выводе на экран параметра аргумент1 функция printf применяет первый спецификатор формата из управляющей строки, при выводе параметра аргумент2 -второй спецификатор формата, и т. д.

Таким образом, во избежание непредсказуемого результата необходимо обеспечить точное соответствие количества спецификаторов форматов и параметров, подставляемых на их место.

Формат представляет собой последовательность символов, следующих за знаком %. Наиболее существенную роль при описании формата играют символы типа, обозначаемые латинскими буквами. Приведем перечень основных символов типов:

- для целочисленных значений: d, i (целое десятичное знаковое), o (целое восьмеричное беззнаковое), u (целое десятичное беззнаковое), x, X, (целое шестнадцатеричное беззнаковое);

- для чисел с плавающей точкой: f (число с плавающей точкой в десятичной записи) ^^ (число с плавающей точкой в экспоненциальной записи), g, G (более компактный вариант форматов %f или %e);

- для символов и строк: c (одиночный символ), s (строка символов), % (используется для вывода знака %).

Спецификаторы форматов в последнем вызове функции printf из программы-примера содержат не только символы типа, но также числа и знак минус. Знак минус означает выравнивание по левому краю. Числа задают минимальную ширину поля вывода. Для значений с плавающей точкой может быть также указано количество знаков после запятой (указывается после ширины поля вывода через точку).

Форматная строка может также содержать обозначения неграфических символов, начинающиеся с '\':

'\n' - переход на новую строку;

'\r' - возврат каретки;

'\t' - табуляция;

'\\' - символ '\';

'V" - символ ".

Обращение к функции scanf во многом сходно с обращением к printf. Для scanf также необходимо указывать форматную строку и следующий за ней список аргументов. Однако для scanf список аргументов должен содержать указатели на переменные. Для получения указателя на любую переменную базового типа необходимо перед именем переменной записать символ &. Для получения указателя на строку достаточно указать имя строки, символ & не нужен.

 

Порядок выполнения работы

1. Набрать текст программы, приведенной в теоретической части лабораторной работы.

2. Осуществить компиляцию программы и ее выполнение.

3. В последнем обращении к функции printf, для всех выводимых значений изменить способы выравнивания на противоположные, затем откомпилировать и выполнить программу.

4. По указанию преподавателя, в последнем обращении к функции printf изменить символы типов и ширину полей, отводимых для вывода значений. Откомпилировать и выполнить полученную программу.

5. Разработать программу, содержащую описания переменных типов int, float, char, long int, short int, unsigned long int, unsigned short int, unsigned char. Программа должна вводить значения всех описанных переменных с клавиатуры, а затем выводить их на экран, при этом для каждой переменной использовать все спецификации форматов, соответствующие ее типу (например, при выводе переменной float необходимо использовать спецификации f, e, E, g, G).

6. Проанализировать полученные результаты.

Задания

Варианты Задания
Y = (x2+0.5)3 + arctg(x2 + 0.5) /3x + / cos(x2+0.5) + lg(x2 + 0.5)4
L = abc + 3, 2sinx + e-sinx –1/ abc + e-2abc +lg|abcd|
Y= +cos / (2z +1, 3) – 1, 5z + ln(z2 + 1) / (z +3, 2) – e-z -1
Z = + 0, 5 arcsin(x3 –1) + e|-1+x|
M = (0, 03x – 1)/3|r2 –4| + lg|r2 –4| - 3arcsin(4-r2)/6, 8r
M = lg|(y - ) (cos |x| - y / arccos +1
M = pqr + 2sin2px + epqr +1 / pqr +ln |pqr|
Y = +3, 2 ln / 2, 7 – 0, 03arccos
S = 2, 7•10-6 + |1–x2| + |1- x2|3/3, 4 – 1, 5ln|1- x2|/ x – arcsin(x2-1)
P = +5, 7lg| / 2, 8x| - 0, 08sin
Q = -0, 07arcctg(x2+2) +1, 27lg(x2+2)/(3, 7a-1)x +
Y = (1+x2)3+ (1-x2)/Cos|x| + lgx/ +arctg(x2+1) – 3e-x-1
Z=(y3-0, 5)3+arcctg(y3-0, 5)/3y - /arcsin(y3-0, 5)
Z= /3e -arcsin -8, 7x
U=8m-0, 5n2/3, 8z, z=lg|3-x2| + /(5, 5+x) + cos2(x2 – 3)

 

Контрольные вопросы

1. Охарактеризуйте назначение и особенности языка Си.

2. Какие символы образуют алфавит языка Си?

3. Что называется лексемами, идентификаторами, литералами? Приведите примеры.

4. Какие типы данных используются в Си? Приведите примеры описания переменных.

5. Охарактеризуйте арифметические, логические и битовые операции Си.

6. Какие разновидности оператора присваивания имеются в Си?

7. Какие операторы управления имеются в Си?

8. Какова структура программы на Си? Что такое функция?

 


ЛАБОРАТОРНАЯ РАБОТА №2

Операции языка Си

Цель работы: Разработка алгоритмов линейной и разветвляющейся структуры. Овладение приемами математической формализации и навыками алгоритмизации задач различного характера с использованием основных алгоритмических структур и типовых алгоритмов обработки информации.

Краткие теоретические сведения

Список операций языка Си приведен в табл.1. Приоритет операций языка Си дан в табл.2.

Таблица 1 - Операций языка Си

Знак операции Описание операции
+ Сложение
- Вычитание, а также унарный минус
* Умножение (бинарная операция)
/ Деление; если оба аргумента -целые, то деление целочисленное
% Целочисленный остаток от деления
++ Увеличение на единицу; имеет префиксную и постфиксную формы: ++x и x++
-- Уменьшение на единицу; также имеет две формы
= Присваивание
+= Прибавление величины из правой части к перемен ной в левой части
-= Вычитание величины из правой части от перемен ной в левой части
*= Умножение переменной из левой части на величину из правой части
/= Деление переменной из левой части на величину из правой части
<, > Меньше, больше
== Равно
< =, > = Меньше или равно, больше или равно
! = Не равно
& &, & Логическое и поразрядное И (бинарные операции)
* Косвенная адресация (унарная операция)
.(точка) Операция принадлежности поля структуре или объединению
-> Косвенная адресация; обращение к полю структуры или объединения через указатель
< < Сдвиг влево, а также быстрое умножение на степени 2
> > Сдвиг вправо, а также быстрое деление на степени 2
Sizeof Размер в байтах операнда, стоящего справа
(type) Приведение типа; преобразует тип переменной в соответствии с ключевым словом (или словами), заключенным в скобках
, (запятая) Связывает два выражения в одно и гарантирует, что левое выражение будет вычислено раньше правого. Результат совпадает с результатом правого выражения
?: (условие) Имеет три операнда, каждый из которых является выражением: (выражение1)? выражение2: выражение3. Если выражение1 истинно, результат всего выражения равен результату выражения2, иначе он равен результату выражения3

 

Таблица 2 -Приоритет операций языка Си

Операции (от высшего приоритета к низшему) Порядок выполнения
() П -> . Слева направо
! ~ ++ -- - (type) * & sizeof (унарные) Справа налево
* / % Слева направо
+ - Слева направо
< < > > Слева направо
< < = > = > Слева направо
==! = " Слева направо
& Слева направо
& & Слева направо
?: (тернарная) Слева направо
= += -= *= /= %= Справа налево

 

Операторы if и if-else

Оператор условия с неполным предписанием задается в языке Си в форме if (выражение) оператор

Оператор (простой или составной) выполняется в случае, если выражение истинно.

Для условия с полным предписанием используется форма

if (выражение) оператор1 else оператор2

Оператор1 выполняется в случае, если выражение истинно, а оператор2 - если ложно.

Возможно построение более сложных конструкций:

if (выражение1) оператор1 else

if (выражение2) оператор2 else оператор3

Выражение означает любое числовое или совместимое с числовым типом выражение. В языке Си нет специального логического типа данных, поэтому выражение считается ложным, если его значение равно нулю.

В случае, когда имеется переменная, которой нужно присвоить одно из двух возможных значений, предпочтительнее применить не конструкцию if-else, а операцию условия?:.

Пример: absolutX = (x> 0)? x: -x;


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 1186; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.02 с.)
Главная | Случайная страница | Обратная связь