Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки, молодежи и спорта Украины
Харьковский национальный университет имени В. Н. Каразина
Факультет компьютерных наук
Отчет по лабораторной работе №3
По дисциплине: «Программирование и алгоритмические языки»
«Переменные, типы данных и операции над ними»
Выполнил: студень группы КС-11
Сарибекян Л.Н.
Проверил: преп. каф. электроники
Литвинов Д. Н.
Харьков
2012
Задание 1. При помощи оператора sizeof определите экспериментально размеры указанных ниже типов. Результаты занесите в таблицу:
Тип |
Размер |
int |
4 |
unsigned int |
4 |
char |
1 |
unsigned char |
1 |
float |
4 |
double |
8 |
short |
2 |
long |
4 |
long long |
8 |
long double |
8 |
Задание 2. Проверьте: что получится, если к максимальному значению некоторого целого типа прибавить единицу? А если вычесть единицу из минимального значения? Проведите эти эксперименты для одного типа со знаком и одного беззнакового типа.
#include <iostream> #include <cmath> //библиотека характеристик переменных #include <limits> using namespace std; unsigned long int main () { //вычисления и вывод результата cout << "long int max + 1 = " << LONG_MAX + 1 << "\n"; cout << "long int min - 1 = " << LONG_MIN - 1 << "\n"; cout << "unsigned long int max + 1 = " << ULONG_MAX + 1 << "\n"; return 0; } |
Задание 3. Объявите три или более переменные разного размера. Узнайте их адреса. Изобразите их на иллюстрации, подобной рис. 1 (нужна только таблица, стрелочек и пояснений не надо).
#include <iostream> using namespace std; int main () { int x; long int y; short int z; cout << "Address of x = " << &x << "\n"; cout << "Address of y = " << &y << "\n"; cout << "Address of z = " << &z << "\n"; return 0; } |
Адреса |
Ячейки |
||
0012FF60 |
x |
||
0012FF54 |
y |
||
0012FF48 |
z |
Задание 4. Определите, к какому типу относятся следующие литералы:
Литерал |
Его тип |
Литерал |
Его тип |
-2 |
int |
2e+1 |
double |
'E' |
char |
'*' |
char |
3.8 |
double |
6.3e-1f |
double |
"E" |
char* |
18L |
int |
-10.0 |
double |
-2F |
int |
"1979" |
char* |
-5UL |
int |
0x13 |
int |
0XDEAL |
int |
Задание 5. Постройте дерево (для того же выражения), аналогичное приведенному на рис. 2, но в предположении, что приоритеты операций инвертированы: + и более приоритетны, чем * и /.
h = (v0*(t + g)*t*t) / 2.0;
Задание 6. Расставьте скобки в следующих выражениях согласно приоритетов операций:
Задание 7. Постройте дерево разбора с указанием преобразований типов (аналогично рис. 4) для выражения из следующего фрагмента:
short days = 512;
int year = 2000 + days/365;
Задание 8. По данным социологов, из N опрошенных человек на улицах Харькова за Партию Программистов собираются голосовать M человек. Используя операцию приведения к типу double, напишите программу, которая по заданным N и M поможет социологам определить, сколько процентов респондентов собираются голосовать за Партию Программистов. Резульат представьте в виде целого числа, отбросив дробную часть. Постройте для своей программы дерево разбора выражения с указанием преобразований типов (аналогично приведенному выше).
#include <iostream> #include <cmath> using namespace std; int main () { setlocale(0,"Rus"); int N, M; double res; cout << "Введите количество всех респодентов: \n"; cin >> N; cout << "\n"; cout << "Сколько из них будут голосовать за Партию Программистов? \n"; cin >> M; cout << "\n"; res = ((double)(M)/N)*100; cout << "За Партию Программистов будут голосовать " << (int)res << "% опрошенных. \n\n\n\n"; return 0; } |
Ответ: 12FF68.
Ответ: Максимальное = 8, минимальное = 1.
Ответ: Double это 64-битное число с плавающей точкой, а float - 32-битное.
Ответ: Побитовое И.
Ответ: Битность влияет на количество занимаемых ячеек 1 бит = 1 ячейка, 8 бит = 8 ячеек и т.д.
Ответ: Приоритет умножения равен 11, а сложения 10, 11>10, следовательно умножение следует выполнять раньше, чем сложение.
Ответ: Если в выражении присутствуют и логические операции и операции сравнения, то следует сперва выполнить сравнение, так как в таком случае мы получим корректный результат.
PAGE \* MERGEFORMAT 6