Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДИЧКА прикладное ПРОГРАМ.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Краткие теоретические и учебно-методические материалы по теме лабораторной работы

Целые данные являются наиболее часто встречаемым типом данных. Большинство машинных команд ПЭВМ ориентированны на обработку целых данных.

В языке Си к целым типам относятся типы char и int. Любой символ в компьютере связан с целым числом – кодом этого символа, например в таблице ASCII. Сам символ необходим, когда информация выводится на экран или на принтер или, наоборот, вводится с клавиатуры. Подобные преобразования символа в код и наоборот производятся автоматически. Тип char по умолчанию является знаковым типом. Тип int всегда знаковый.

В стандарте ANSI языка Си имеются модификаторы

signed – знаковый,

unsigned – беззнаковый,

long – длинный,

short – короткий.

Модификаторы ставятся перед соответствующим типом и, в результате, получаются новые типы данных. Модификаторы signed и unsigned могут применятся к типам char и int. Модификаторы short и long могут применятся к типу int. Модификаторы signed и unsigned могут комбинироваться с модификаторами short и long в применении к типу int.

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

При внимательном рассмотрении этой таблицы можно заметить, что типы int, short int, signed int и signed short int имеют одни и те же пределы изменения. Эти типы, хотя и имеют разные названия, являются совершенно одинаковыми в данной реализации компилятора языка. Типы int и signed int всегда обозначают один и тот же тип, так как тип int всегда знаковый и без модификатора signed. Модификатор short в данной реализации не оказывает никакого воздействия на тип.

Таблица 1 – размеры типов данных

Тип

Размер в байтах

(битах)

Интервал изменения

char

unsigned char

signed char

int

unsigned int

signed int

short int

unsigned short int

signed short int

long int

signed long int

unsigned long int

  1. (8)

  1. (8)

  1. (8)

  2. (16)

  1. (16)

2 (16)

2 (16)

2 (16)

2 (16)

4 (32)

4 (32)

4 (32)

от –128 до 127

от 0 до 255

от –128 до 127

от –32768 до 32767

от 0 до 65535

от –32768 до 32767

от –32768 до 32767

от 0 до 65535

от –32768 до 32767

от –2147483648 до 2147483647

от –2147483648 до 2147483647

от 0 до 4294967295

При вводе и выводе целых данных используются следующие спецификаторы:

%c – символ,

%d – целое десятичное число,

%i – целое десятичное число,

%o – восьмеричное число,

%u – беззнаковое десятичное число,

%x – шестнадцатеричное число,

%ld – целое типа long int.

При работе с целыми данными нередко приходится иметь дело с операциями mod – остаток от деления нацело, и с div частное от деления нацело. Эти операции определяются как

a div b = [ a / b ]

a mod b = a - b * [a / b ] , где [x] - целая часть числа х.

Например:

11 div 4 = [2.75] = 2 11 mod 4 = 11 – 4*2 = 3

(-11) div 4 = [-2.75] = -2 (-11) mod 4 = (-11) – 4*(-2) = -3

11 div (-4) = [-2.75] = -2 11 mod (-4) = 11 – (-4)*(-2) = 3

(-11) div (-4) = [2.75] = 2 (-11) mod (-4) = (-11) – (-4)*2 = -3

Результат деления нацело по знаку положителен, если оба операнда одного знака, и отрицателен, если операнды разного знака. Это аналогично обычному делению. Остаток же от деления нацело, если не равен нулю, по знаку совпадает с делимым. Делить на нуль нельзя, т.е. в a/b, a div b, a mod b предполагается, что b0.

В языке Си операция mod обозначается %, т.е. a mod b записывается как a%b. Эта операция определена только для целых a, b. Специального символа для обозначения операции div в языке Си нет. Операция a div b в языке Си реализуется как a/b, где a и b – целые данные. Дело в том, что в языке Си операция деления ( / ) для целых операндов вычисляет частное от деления нацело. Если же хотя бы один операнд вещественный, то это будет обычная операция деления.

Пример:

Вычислить сумму цифр числа n.

# include<stdio.h>

main( )

{

long int n;

int S;

scanf("%ld",&n);

if (n < 0) n = -n;

S = 0;

while(n! = 0)

{ S = S + n%10;

n = n / 10;}

printf("Сумма цифр = %d",S);}