Тема: Базовые типы данных.
Цель: Ознакомиться с базовыми типами данных.
Отчет по самостоятельному заданию.
1. Переменные, каких типов можно использовать для хранения чисел:
v –129 - signed short /*так как данное число попадает в диапазон signed short */
v 1.1 – float /*так как данное число попадает в диапазон float*/
v 129 – unsigned short /*так как данное число попадает в диапазон unsigned short */
v 32768 - unsigned short /*так как данное число попадает в диапазон unsigned short */
v –3000000 - signed long /*так как данное число попадает в диапазон signed long */
v 40000 - signed short /*так как данное число попадает в диапазон signed short */
v 25E2 - float /*так как данное число попадает в диапазон float*/
2.Найти ошибку:
v enum tag1 /*идет объявление скалярной переменной перечисляемого типа */
/*tag1 – тег или идентификатор */
{
const_1,
const_2=18, /*список переменных */
const_8,
const_0
} name1;
name1= const_3; /*данная запись не правильна, так как переменная const_3 не была описана в списке переменных, , следовательно, к ней обратиться нельзя */
v enum tag1 name2; /*далее должен следовать список переменных, но он отсутствует, а находится только переменная перечисляемого типа name2, следовательно, это ошибка, так как зарезервированное слово enum задает перечисляемый тип */
3. Чему равно значение константы перечисления const_0 из примера II.1.
Значение константы перечисления const_0 равно 20, так как значение const_2 равно 18, а по правилам значение последующих констант, не имеющих определенного константного выражения, увеличивается на 1.
4.Изобразить схематично, как будут размещены элементы массива list в памяти,
начиная с адреса O2BE.
Short list [3] [2] [4];
02BE 02C0 02C2 02C4 02C6 02C8 02CA 02CC
01 000 |
001 |
00 002 |
00 003 |
01 010 |
011 |
01 012 |
01 013 |
02CE 02D0 02D2 02D4 02D6 02D8 02DA 02DC
10 100 |
10 101 |
10 102 |
11 103 |
11 110 |
11 111 |
1 112 |
11 113 |
02DE 02E0 02E2 02E4 02E6 02E8 02EA 02EC
20 200 |
21 201 |
20 202 |
20 203 |
21 210 |
21 211 |
21 212 |
21 213 |
5. Определить трехмерный массив элементов целого короткого типа размерностью 5x8x10. Присвоить элементу, находиться во 2-ом слое, 5 строке, 2-ом столбце число 10.
Short int Mas [5] [8] [10]; /*определяется трехмерный массив целого короткого типа */
Mas [2] [5] [2] = 10; /*присваиваем элементу с индексами 2, 5, 2 значение 10*/
6. Выполнить предыдущее задание 4 с использованием указателя.
Short int Mas [5] [8] [10], *Pa; /*определяется трехмерный массив целого короткого типа и указатель на массив */
Pa=Mas;
*(Pa [2] [5] + 2*1) = 10;
*(Pa [2] + 10*5 + 2*1) = 10;
*(Pa + 2*8*5 + 10*5 + 2) = 0;
/*эквивалентные операции присваивания некоторому элементу массива при помощи указателя и адресной арифметики определенного значения */
7. Какого типа будет результат вычисления следующих выражений:
· unsigned int i=0 ; /*тип - без знаковый по умолчанию */
double j=1.1; /*тип - плавающий двойной точности */
(i*j)/0.5 /*результат - double */
· short i, j; /*знаковый короткий */
i*j /*результат – int */
· char c; /*знаковый символьный */
long e; /*знаковый длинный */
(c/e)*7.5; /*результат – long */
· float a,b; /*плавающий одинарной точности */
a – b /*результат – double */
8. Выполнить на ПЭВМ 2-е программы.
А) Массив задается обычным способом.
# include <stdio.h> /*подключение файла*/
# define KO 3 /*объявление макроопределения КО 3*/
main() /*главная функция*/
{
int mas [KO],I: /*описание целочисленного массива КО и переменной I=3*/
mas [0]=123; /*присваивание элементам массива значения */
mas [1]=456;
mas [2]=2000;
Printf(“\nАдреса переменных :”);
Printf(“%5p %5p %5p”,& mas[0], & mas [1],& mas [2]); /*печать адресов переменных */
Printf(“\nЗначения переменных :”);
Printf(“%5d %5d %5d”,mas[0], mas [1], mas [2]); /*печать значений переменных */
}
Ответы: Адреса переменных: FFF0 FFF2 FFF4
Значения переменных: 123 456 2000
Б) Массив изменяется.
# include <stdio.h> /*подключение файлов*/
# include <conio.h>
# include <alloc.h>
# define KO 3 /*объявление макроопределения КО 3*/
main() /*главная функция*/
{
int *u,I; /*выделение памяти для трех элементов, с помощью функции calloc ()*/
u*=(int) calloc (KO, sizeof(int));
u*=123;
*(u+1)=456;
*(u+2)=2000;
Printf(“\nАдреса переменных :”); /*печать адресов переменных */
Printf(“%5p %5p %5p”,u,(u+1),(u+2));
Printf(“\nЗначения переменных :”); /*печать значений переменных*/
Printf(“%5d %5d %5d”,*u, (u+1), *(u+2));
}
Ответы: Адреса переменных: 0374 0376 0378
Значения переменных: 123 456 2000
ВЫВОД: я ознакомился с базовыми типами данных, демонстрируя свои умения на лабораторной работе.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.