Тест 12 тема «Составные типы данных» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тест 12 тема «Составные типы данных»



1.Доступ к элементам массива осуществляется с помощью

a) операции точки

b) имени элемента

c) индекса элемента

2.Все элемента массива должны быть______________типа.

3.Напишите выражение, которое определяет одномерный массив, именованный как doubleArray, типа double, содержащий 100 элементов.

4.Элементы 10-элементного массива нумеруются с ______ и до________.

5.Напишите выражение, которое выводит j элемент массива doubleArray с помощью cout и операции <<.

6.Какой по счету элемент массива doubleArray[7]?

a) шестой

b) седьмой

c) восьмой

d) неизвестно

7.Напишите выражение, которое определяет массив coins, типа int и инициализирует его значениями: 5см, 10 см, 25 см, 50 см, 1 метр.

8.При доступе к многомерному массиву его индексы:

a) разделены запятыми

b) заключены в квадратные скобки и разделены запятыми

c) разделены запятыми и заключены в квадратные скобки

d) заключены в квадратные скобки

9.Напишите выражение доступа к 4-му элементу 2-го подмассива двумерного массива twoD.

10. Истинно ли следующее утверждение: в С++ возможна реализации четырехмерного массива.

11. Для двумерного массива flarr типа float запишите выражение, которое объявляет массив и инициализирует его первый подмассив значениями 52, 27, 83; второй – значениями 94, 73, 49; третий – значениями 3, 4 6.

12. Истинно ли следующее утверждение: компилятор будет протестовать, если вы попытаетесь получить доступ к 14 элементу массива в 10-элементом массиве?

13. Строка в С++ - это_______________ типа______________.

14. Напишите выражение, которое определяет строковую переменную city, содержащую строку длиной до 20 символов.

15. Напишите выражение, которое определяет строковую константу city, имеющую значение «Привет».

16. Истинно ли следующее утверждение: операция >> прекращает считывание строки при обнаружении пробела?

17. Вы можете считывать ввод, который содержит несколько строк или текст, используя:

18. обыкновенную комбинацию cout<<

a) метод cin.get() с одним аргументом

b) метод cin.get() с двумя аргументами

c) метод cin.get() с тремя аргументами

19. Напишите выражение, которое использует библиотечную функцию для копирования строки name в строку blank.

20. Структура объединяет:

a) данные одного типа

b) логически связанные данные

c) целые именованные значения

d) переменные

21. После закрывающей скобки структуры ставится _____________.

22. Опишите структуру, содержащую три переменные типа int с названиями hrs, mins и secs. Назовите структуру именем time.

23. Истинно ли следующее утверждение: при объявлении структуры выделяется память под переменную?

24. При обращении к полю структуры левым опреандом операции (.) является:

a) поле структуры

b) имя структуры

c) структурная переменная

d) ключевое слово struct

25. Напишите оператор, присваивающий полю hrs структурной переменной time2 значение, равное 11.

26. Напишите определение, инициализирующее полй структурной переменной time1 типа time, описанной выше, значениями hrs =11, mins =10 и secs =59.

27. Истинно ли следующее утверждение: вы можете присвоить значения одной структурной переменной другой структурной переменной того же типа?

28. Напишите выражение, присваивающее переменно temp значение поля paw структурной переменной fido.

29. Что определяет выражение: employeeemplist[100];?

30. Напишите выражение для доступа к переменной структуры salary, которая является 15 – элементом массива emplist.

31. Напишите выражение, которое определяет массив manybirds, содержащий в себе 80 объектов типа bird.


Тест 13 тема «Составные типы данных. Строки»

Содержательно определите действие, производимое над строкой.

1 const n=80; char str[n]; int i, j; cin.getline(str,n);for(i=0;str[i];i++);for(j=0,i--; i>j; j++,i--) {char ch;ch=str[i];str[i]=str[j];str[j]=ch;}cout<<str;
2 const n=80; char str[n]; cin.getline(str,n);for(int i=0; str[i]!=0; i++) if (str[i]>='a'&&str[i]<='z') str[i]+='A'-'a';cout<<str;
3 const n=80; char str[n]; cin.getline(str,n); int i, old, nw; for(i=0,old=0,nw=0;str[i];i++) { if (str[i]==' ')old=0; else { if (old==0) nw++; old=1;} } cout<<"old="<<old<<"nw="<<nw<<endl;
4 const n=80; char str[n]; cin.getline(str,n); int i,j; for(i=0, j=0; str[i]; i++) if (str[i]!=' ') str[j++]=str[i]; str[j]='\0'; cout<<str;
5 const n=80; char str[n]; long nn; int k, mm;cin>>nn;for(mm=nn, k=0; mm!=0;mm/=10,k++);for(str[k--]='\0'; k>=0;k--) {str[k]=nn%10+'0';nn/=10;}cout<<str;
6 const n=80; int count=-1; char str[n],str1[n];cin.getline(str,n); cin.getline(str1,n);int i,j;for(i=0;str[i]!='\0';i++) { for(j=0;str1[j]!='\0';j++) if(str[i+j]!=str1[j]) break; if(str1[j]=='\0')count=i;}cour<<count;
7 const n=80; char str[n]; cin.getline(str,n); char ch,ch1=' '; int i, count, m; for(m=0,ch='A';ch<='Z';ch++) { for(i=0,count=0;str[i];i++) if(str[i]==ch) count++; if(count>m) {ch1=ch;m=count;} } cout<<"ch1="<<ch1<<endl;
8 const n=80; char str[n]; cin.getline(str,n); int i,j,cm; for(i=j=cm=0;str[i];i++) { if(str[i]=='*'&& str[i+1]=='/'){cm--;i++;continue;} if(str[i]=='/'&&str[i+1]=='*'){cm++;i++;continue;} if(cm==0)str[j++]=str[i]; } str[j]='\0'; cout<<str;

 


Тест 14 тема «Указатели»

 

1. Напишите выражения, которое выводит адрес переменной test/

2. Адреса смежных в памяти переменных типа float отличаются на ____________.

3. Указатель это:

a) адрес переменной;

b) обозначение переменной, которая будет доступна следующей;

c) переменная для хранения адреса;

d) тип данных для адреса переменных.

4. Напишите выражения для:

a) адреса переменной var;

b) значения переменной, на которую указывает var;

c) тип данных указателя char.

5. Адрес это - __________________, а указатель – это ________________.

6. Напишите определение для переменной указателя на double.

7. Указатели полезны при ссылке на адреса памяти. Которые не имеют ____________.

8. Пусть указатель testptr указывает на переменную testvar. Напишите выражение, которое позволит получить значение переменной testvar, не используя при этом ее имя.

9. Звездочка, расположенная после имени типа данных, означает ________________.
Звездочка, расположенная перед именем переменой, означает ________________.

10. Выражение *test означает:

a) указатель на переменную test;

b) разыменование переменной test.

11. Является ли правильным следующий код? Объясните свой ответ.

int intvar=100;

int *intptr;

cout<<*intptr;

12. Есть ли разница между intarr[3] и(intarr+3)?

13. Напишите код, который используя указатели, выводит каждое значение массива intarr, имеющего 10 элементов целого типа.

14. Пусть intarr массив целых элементов. Почему выражение intarr++ не правильно?

15. Предположим, что переменная ted имеет тип double. Объявите указатель на ted и используйте его для вывода значения этой переменной.

16. Используя указатели, напишите небольшую программу для копирования 80 символов строки s в строку s1.

17. Первый элемент строки это:

a) имя строки;

b) первый символ строки;

c) длина с троки;

d) имя массива, содержащего строку.

18. Предположим, что treacle является массивом 10 переменных типа float. Объявите указатель на первый элемент массива treacle, и используйте указатель для вывода значений первого т последнего элемента массива.

19. Является ли следующий код допустимым? Если да, то что он выведет на экран?

cout<<(int*)”home of the jolly byres”;

20. Операция new:

a) возвращает указатель на переменную;

b) создает память с именем new;

c) получает память для новой переменной;

d) позволяет узнать, сколько памяти свободно на данный момент.

e) использование операции new может привести к меньшим ______________памяти, сем использование массива.

21. Операция delete возвращает ________________операционной системе.

22. Напишите определение массива arr из 8 указателей, которые указывают на переменные типа float.

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

 

 

Тест 15 тема «Указатели»

1. Заполните пробелы в следующих утверждениях:

a) Указатель – это переменная, которая содержит в качестве своего значения ________ другой переменной;

b) Для присвоения указателю начального значения можно использовать три значения, _____________ или ________________;

c) Единственным целым, которое может быть присвоено указателю, является ____________.

2. Укажите, справедливы или нет следующие утверждения. Если они ошибочны, то почему.

a) Операция адресации может быть применима только к константам, к выражениям не имеющим результат, на которые можно сослаться;

b) Указатель, объявленный как void, может быть разыменован.

3. Выполните следующие упражнения, предполагая, что начальный адрес массива – 1002500. Каждая часть упражнения использует соответствующие результаты предыдущих частей.

a) Объявите массив типа double с именем numbers с 10 элементами и присвойте начальные значения 0.0, 1.1, 2.2,..., 9.9. Предполагайте, что определена символическая константа SIZE равная 10.

b) Объявите указатель Ptr, который указывает на объект типа double.

c) Напечатайте элементы массива numbers, используя запись индексов массива.

d) Приведите два различных оператора, которые присваивают начальный адрес массива numbers переменной указателю Ptr.

e) Напечатайте элементы массива numbers, используя указателя Ptr.

f) Напечатайте элементы массива numbers, используя индексацию указателя Ptr.

g) Напечатайте элементы массива numbers, используя указатель – смещение с именем массива как указателем.

h) Сошлитесь на четвертый элемент массива numbers, используя индекс массива, запись указатель – смещение с именем массива как указателем, запись указатель – смещение с Ptr и запись индекса указателя Ptr.

i) Предполагая, что Ptr указывает на начало массива numbers, определите, на какой адрес ссылается выражение Ptr + 8? Какое значение хранится по этому адресу?

j) Предполагая, что Ptr указывает на numbers [5], определите, на какой адрес будет ссылаться Ptr после выполнения операторы Ptr - = 4. Какое значение хранится по этому адресу?

4. Для каждого из следующих пунктов напишите один оператор, который выполняет указанное задание. Предполагайте, что переменные с плавающей запятой number1 и number2 уже объявлены и что number1 получила начальное значение 7.3. Кроме того, предполагайте, что переменная Ptr имеет тип char *, а массивы s1 [ 100 ] и s2 [ 100 ] – тип char.

a) Объявите переменную dPtr как указатель на объект типа double.

b) Присвойте начальный адрес переменной number1 указателю переменной dPtr.

c) Напечатайте значение объекта, на который указывает dPtr.

d) Присвойте значение объекта, на который указывает dPtr, переменной number2.

e) Напечатайте значение number2.

f) Напечатайте адрес number1.

g) Напечатайте адрес, хранимый в dPtr. Совпадает ли напечатанное значение с адресом number1?

h) Скопируйте строку, хранимую в массиве s2, в массив s1.

i) Сравните строку s1 со строкой s2.

j) Добавьте 10 символов из строки s2 в строку s1.

k) Определите длину строки s1. напечатайте результат.

l) Присвойте ptr позицию первой лексемы в s2. Лексемы в s2 разделены запятыми.

5. Найдите ошибку в каждом из следующих фрагментов программ и напишите правильный вариант. Полагайте
int *z_ptr, number;
int mas [ 5 ] = { 1, 2, 3, 4, 5 }; int *m_ptr = mas;

a) ++z_ptr; // для дальнейших фрагментов считать, что z_ptr ссылается на массив mas

b) number = z_ptr;

c) number = *z_ptr [ 2 ];

d) for (int i = 0; i <= 5; i + +) cout << zptr [ i ];

e) ++mas;

f) char s [ 10 ]; cout << strncopy (s, “hello”, 5);

g) char s [ 12 ]; strcpy (s, “Welcome to Odessa”);

h) if (strcmpy (string1, string2)) cout << “Строки равны”;


Тест 16 тема «Функции»

1) Назовите три действия, необходимые для использования функции.

2) Постройте прототипы функций, соответствующие следующим описаниям:

a) igor() не принимает ни одного аргумента и не возвращает никакого значения;

b) tofu() принимает аргумент типа int и возвращает значение типа float;

c) mpg() принимает два аргумента типа double и возвращает значение типа double;

d) summation() принимает имя массива с элементами типа long и размер по значению, возвращает значение типа long;

e) doctor() принимает строковый аргумент(эта строка модификации не подлежит) и возвращает значение типа double;

f) ofcourse() принимает структуру boss в качестве аргумента, но ничего не возвращает;

g) plot() принимает в качестве аргумента указатель на структуру map и возвращает строку.

3) Создайте функцию, которая принимает три аргумента: имя массива элементов типа int, размер массива и значение типа int. Функция должна присвоить каждому элементу массива значение типа int.

4) Напишите функцию, которая принимает в качестве аргументов имя массива элементов типа double и размер массива, а также возвращает наибольшее значение из элементов этого массива. Эта функция не должна изменять содержимое массива.

5) Почему мы не используем спецификатор const для аргументов функции, которые относятся к одному из базовых типов данных?

6) Назовите три формы строк в стиле C, которые могут применяться в программе, написанной на C++.

7) Создайте функцию, имеющую следующий прототип:

int replace(char * str, char c1, char c2);

Функция заменяет, каждый символ c1, встретившийся в строке str, символом c2, и возвращает количество сделанных ею замен.

8) Что означает *”pizza”? Что можно сказать о “taco”[2]?

9) В C++ обеспечивается возможность передавать как структуры по значению, так и адрес структуры. Если gits является переменной типа структура, как вы передадите ее по значению? Как вы передадите ее адрес?

10) Предположим, что функция song() обладает следующим прототипом:

void song (char * name, int times);

a) как модифицировать этот прототип, чтобы значение переменной times, заданное по умолчанию, было равно 1?

b) какие изменения вы внесете в определение функции?

c) можете ли вы назначить значение по умолчанию “hello”, принятое по умолчанию, переменной name?

11) Создайте перегружаемую версию функции iquote(), которая отображает значения аргументов, заключенные в двойные кавычки. Напишите три версии: одну – для аргумента типа int, другую – для аргумента типа double и третью – для аргумента типа строка в стиле C.

12) Имеем структуру box:

Struct box

{char maker[40]; float height; float width; float length; float volume;};

a) Создайте функцию, которая ссылается на структуру box как на свой формальный аргумент и отображает значение каждого элемента структуры;

b) Создайте функцию, которая ссылается на структуру box как на свой формальный аргумент и присваивает элементу volume результат произведения трех других измерений.

13) Предположим, что мы хотели получить представленные ниже результаты. Может ли каждый из них быть получен с помощью аргументов, заданных по умолчанию, путем перегрузки функций, и тем и другим способом, а также – можно ли вообще обойтись без этих средств. Создайте необходимые прототипы.

a) Функция mass(density, volume) возвращает массу объекта, имеющего плотность density и объем volume, а функция mass(density) – массу тела, имеющего плотность density и объем 1,0м3. Все величины имеют тип double;

b) В результате вызова функции repeat(10, “Ok”) данная строка отображается десять раз, в то время как функция repeat(“Hello”) отображает заданную строку пять раз.

c) В результате вызова функции average(3,6) возвращается среднее значение типа int двух аргументов типа int, а в результате вызова average(3.0,6.0) возвращается среднее значение типа double двух аргументов типа double.


Тест 17 тема «Функции»

1) Заполнить пробелы в следующих выражениях:

a) Программные модули на C++ называются ________________ и _______________;

b) Функция активируется с помощью ______________;

c) Переменная, которая известна только внутри функции, в которой она определена, называется _______________;

d) Оператор _____________ в вызываемой функции используется, чтобы передать значение выражения обратно в вызывающую функцию;

e) Ключевое слово _______ используется в заголовке функции, чтобы указать, что функция не возвращает значения, или указать, что она не содержит параметров;

f) ________________ идентификатора – это часть программы, в которой идентификатор не может быть использован;

g) Существуют два пути возвращения управления из вызванной функции в оператор вызова ________________ и _________________;

h) __________________ позволяет компилятору проверить количество, типы и порядок следования аргументов, передаваемых функции;

i) Спецификаторами классов памяти являются _________, ____________, _____________ и ________;

j) Переменные, объявленные в блоке или в списке параметров функции, имеют класс памяти _____________, если не указать иное;

k) Спецификатор класса памяти ____________ представляет собой рекомендацию компилятору хранить переменную в одном из регистров памяти;

l) Переменная, объявленная вне любого блока или функции, является ___________ переменной;

m) Для того, чтобы локальная переменная сохраняла свое значение между вызовами функции, она должна быть объявлена как имеющая класс памяти _________________;

n) Четырьмя возможными областями действия идентификатора являются ___________, _____________, __________________ и _______________________;

o) В C++ можно иметь разные функции с одинаковым именем, каждая из которых оперирует с различными типами и (или) количеством аргументов. Такая функция называется ____________;

p) Спецификация ___________ используется для объявления переменных только для чтения;

q) _______________ функции предоставляют возможность определить единственную функцию для выполнения заданий со многими различными типами данных.

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

a) переменная x в main;

b) переменная y cube;

c) функция cube;

d) функция main;

e) прототип функции cube.

3) Напишите прототипы для каждой функции:

a) Функция summa принимает два аргумента типа double и возвращает результат типа double;

b) Функция smallest принимает три целых значения и возвращает целое значение;

c) Функция instruction не получает ни одного аргумента и не возвращает значения.

4) Напишите объявления для следующих переменных:

a) Целая count, которая должна содержаться в регистре. Инициализируйте переменную count значением 0;

b) Переменная типа float Val, сохраняющая сове значение между вызовами функции, в которой она определена;

c) Внешняя целая number, чья область действия должна быть ограничена оставшейся частью файла, в котором она определена.

5) В каком случае прототип функции должен содержать объявления типа параметра double&?

6) Найдите ошибку в каждом из следующих фрагментов программ и объясните, как можно исправить ошибку:

a) int q (vloid) { cout<<”внутри функции q; int h (void) {cout<<”внутри функции h;}} b) int sum (int x, int y) { int result; result = x + y;} c) void product (void) { int a, b, c, result; cout << “Введите три целых числа<<endl; cin >> a >> b >> c; result = a * b * c; cout << “Результат равен” << result; return result; }
d) int sum (int n) { if (n = = 0) return 0; else n + 1; } e) void f (double a); { float a; cout << a << endl; }

 

 


Тест 18 тема «Функции»

1) Наиболее важным из назначений функции является:

a) именование блока операторов; b) обработка аргументов и возвращение значения;
c) уменьшение блока операторов; d) структуризация программы.

2) Код функции задается в ____________ функции.

3) Напишите функцию foo(), выводящую на экран слово FOO.

4) Оператор, описывающий функцию, называется ее ________________или ______________.

5) Операторы, выполняющие назначение функции, составляют ____________ функции.

6) Оператор, инициирующий выполнение функции, называется ____________ функции.

7) Первая строка в объявлении функции называется _______________.

8) Аргумент функции – это:

a) переменная функции, получающее значение из вызывающей программы;

b) способ, с помощью которого функция защищает себя от воздействия значений, передаваемых вызывающей программой;

c) значение, передаваемое вызывающей программой в функцию;

d) значение, возвращаемое функцией вызывающей программе.

9) Истинно ли следующее утверждение: когда аргументы передаются по значению, функция имеет доступ к переменным вызывающей программы?

10) Для чего предназначена возможность указывать в прототипе функции имена аргументов?

11) Какие из перечисленных ниже элементов программы можно передавать в функцию:

a) константы; b) переменные; c) структуры; d) заголовочные файлы.

12) Что означают пустые скобки после имени функции?

13) Сколько значений может возвращать функция?

14) Истинно ли следующее утверждение: когда функция возвращает значение, ее вызов можно ставить справа от знака операции присваивания?

15) Где указывается тип значения, возвращаемы функцией?

16) Функция, не возвращающая значения, имеет тип возвращаемого значения _______________.

17) Дана следующая функция: int times (int a) { return (a * 2); } Напишите функцию main(), которая будет содержать все необходимое для вызова данной функции.

18) Когда аргумент передается в функцию по ссылке,

a) внутри функции создается переменная, хранящая значение этого аргумента;

b) функция не имеет доступа к значению аргумента;

c) в вызывающей программе создается переменная для хранения значения аргумента;

d) функция получает доступ к аргументу в вызывающей программе.

19) Какова причина использования ссылочного механизма передачи аргументов в функцию?

20) Перегруженные функции:

a) являются группой функций, имеющих одно и тоже имя;

b) имеют одинаковое количество аргументов и их типы;

c) облегчают процесс программирования;

d) могут не выдержать нагрузки.

21) Напишите прототипы двух перегруженных функций с именем bar(). Обе функции имеют возвращаемое значение типа int. Первая функция имеет единственный аргумент типа char, а вторая – два аргумента типа char. Если это невозможно объясните причину.

22) Значение аргумента по умолчанию:

a) может использоваться вызывающей программой b) должно быть константой;
c) может использоваться функцией d) должно быть значением переменной.

23) Напишите прототип функции с именем blyth(), возвращающей значение типа char и принимающей два аргумента. Первый из аргументов имеет тип i n t, а второй - тип float и значение по умолчанию, равное 3,14159.

24) Область видимости и класс памяти связаны с __________________ и ________________ переменной.

25) Какие функции могут иметь доступ к глобальной переменной, расположенном в одном файле с ним?

26) Какие функции могут иметь доступ к локальной переменной?

27) Статическая локальная переменная используется для:

a) расширения области видимости переменной;

b) ограничения видимости переменной до одной функции;

c) сохранения переменной в памяти после выполнения функции;

d) сохранения значения переменной завершения функции.


Тест 19 тема «Классы»

1. Для чего необходимо определение класса?

2. _______________имеет такое же отношение к _____________, как стандартный тип данных к переменной этого типа.

3. В определении класса члены класса с ключевым словом private доступны:

a) любой функции программы;

b) в случае, если вам известен пароль;

c) методам этого класса;

d) только открытым членам этого класса.

4. Напишите определение класса leverage, включающее одно закрытое поле типа int c именем crowbar и одним открытым методом с прототипом void pry().

5. Истинно ли следующее утверждение: поля класса должны быть закрытыми?

6. Напишите оператор, создающий объект lever1 класса leverage, описанного в вопросе 4.

7. Операция точки (операция доступа к члену класса) объединяет два элемента (слева направо):

a) член класса и объект класса;

b) объект класса и класс;

c) класс и член этого класса;

d) объект класса и член этого класса.

8. Напишите оператор, который вызовет метод pry() объекта lever1 (см. вопросы 4 и 6).

9. Методы класса, определенные внутри класса, по умолчанию________________.

10. Напишите метод getcrow() для класса leverage (см. вопрос 4), который будет возвращать значение поля crowbar.

11. Конструктор вызывается автоматически в момент________________ объекта.

12. Имя конструктора совпадает с именем_____________ класса.

13. Напишите конструктор, который инициализирует нулевым значением поле crowbar класса leverage (см. вопрос 4).

14. Верно ли следующее утверждение: класс может иметь более одного конструктора с одним и тем же именем?

15. Методу класса всегда доступны данные:

a) объекта, членом которого он является;

b) класса, членом которого он является;

c) любого объекта класса, членом которого он является;

d) класса, объявленного открытым.

16. Формальным различием между структурами и класса в C++ является то, что _______.

17. Пусть определены три объекта класса. Сколько копий полей класса содержится в памяти? Сколько копий методов функций?

18. Посылка сообщений объекту класса эквивалентна _______________.

19. Классы полезны потому, что:

a) не занимают памяти, если не используются;

b) защищают свои данные от доступа со стороны других классов;

c) собирают все аспекты, касающиеся отдельной вещи;

d) адекватно моделируют объекты реального мира.

20. Константный метод, вызванный для объекта класса:

a) может изменять как не константные, так и константные поля;

b) может изменять только не константные поля;

c) может изменять только константные поля;

d) не может изменять как не константные, так и константные поля.

21. Истинно ли следующее утверждение: объект, объявленный как константный, можно использовать только с помощью константных методов?

22. Дайте определение класса, представляющего банковский счет. Элементы данных должны содержать имя вкладчика, номер счета (использовать строку) и сальдо. Функции-элементы должны выполнять такие действия:

a) создание объекта и его инициализация;

b) отображение имени вкладчика, номера счета и сальдо;

c) вклад на банковский счет суммы, заданной аргументом;

d) снятие с банковского счета суммы, заданной аргументом.


Тест 19 тема «Классы»

 

1. Ключевое слово________________ начинает определение класса.

2. Члены класса доступны посредством операции ____________ в сочетании с объектом класса или посредством операции ______________ в сочетании с указателем на объект класса.

3. Члены класса, указанные как ____________, доступны только функциям-членам класса и друзьям класса.

4. ___________________ является специальной функцией-членом, используемых для задания начальных значений данным-членам класса.

5. По умолчанию доступ к членам класса - ________________.

6. Функции – члены класса обычно делаются ________________ типа, а данные-члены класса - ______________ типа.

7. Для присваивания объекта класса другому объекту того же класса можно использовать __________.

8. Говорят, что реализация класса скрыта от его клиентов или _______________________.

9. Члены класса, указанные как __________________, доступны везде в области действия объекта класса.

10. Константный объект должен быть _________________; он не может быть изменен после его создания.

11. Функция-член может быть объявлена как static, если она не должна иметь доступ к ____________ членам класса.

12. Объекты-члены создаются ___________, чем объект включающего их класса.

13. Найдите ошибку (или ошибки) в каждом из следующих пунктов и объясните, как их исправить.

a) допустим, что в классе Time объявлен следующий прототип:

void ~Time (int);

b) следующий фрагмент является частью определения класса Time.

class Time {

private: int hour = 0, minute = 0,second = 0;

public: // прототипы функций };

c) допустим, что в классе Employee объявлен следующий прототип.

int Employee (const char *, const char *);

d) следующий фрагмент является частью определения класса Example.

class Example {

private: int data; static int count;

public:

Example (int y = 10) { data = y; }

int getData () const { return ++data; }

static int gatCount () { cout << data << endl; return count; }

};

e) следующий фрагмент является частью определения класса Data.

class Data {

private: int year, month, day;

public:

Data ();

Data (year = 1999, month = 0, day = 0)

};

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

class samp {

private: int a;

public:

//.добавить конструкторы

int get_a () { return a; }};

Void main ()

{ samp ob (100); // инициализация объекта a значением 100

samp obarray [ 10 ]; // неинициализируемый 10 – элементный массив

//...};



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 1830; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.108.241 (0.204 с.)