Тест 1 тема «Начальные сведения» 


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



ЗНАЕТЕ ЛИ ВЫ?

Тест 1 тема «Начальные сведения»



Сборник тестов

дисциплина “Основы программирования и алгоритмические языки. C++”

Оглавление

 

Тест 1 тема «Начальные сведения». 2

Тест 2 тема «Начальные сведения». 3

Тест 3 тема «Основы программирования на C++». 4

Тест 4 тема «Основы программирования на C++». 4

Тест 5 тема «Основы программирования на C++». 5

Тест 6 по тема «Циклы и ветвления». 6

Тест 7 тема «Операторы языка С++». 7

Тест 8 тема «Циклы и ветвления». 8

Тест 9 тема «Циклы и ветвления». 9

Тест 10 тема «Массив». 10

Тест 11 тема «Массивы». 11

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

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

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

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

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

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

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

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

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

Тест 20 тема «Перегрузка операций». 24

Тест 21 тема «Классы и перегрузка операций». 26

Тест 22 тема «Классы и перегрузка операций». 27

 


Тест 1 тема «Начальные сведения»

 

Задание
1,5б Дайте их краткую характеристику принципов, которые сочетает в себе язык C++
 
0,5б Pascal – это язык C++ – это язык
0,5б В качестве образца по отношению к объекту выступает:
метод класс операция значение
0,5б Двумя основными компонентами объекта являются:
 
0,5б В C++ функцию, входящую в состав класса называют:
функция-член класса оператор класса функция класса метод класса
0,5б Защита данных от несанкционированного доступа другими функциями называется:
 
0,5б Объединение данных и функций называется:
 
Какие причины являются главными для использования объектно-ориентированных языков:
возможность создания собственных типов данных
простота операторов объектно-ориентированных языков по сравнению с процедурными языками
наличие средств для автокоррекции ошибок в объектно-ориентированных языках
объектно-ориентированные программы легче концептуализируются
0,5б Что отображает объекты реального мира точнее, чем функции
 
Если язык обеспечивает возможность создания пользовательских типов данных, то говорят, что язык называется:
наследуемым инкапсулируемым перегруженным расширяемым
Операция, выполняющая заданные действия над пользовательским типом данных, называется:
полиформической инкапсулированной классифицированной перегруженной
Как называется возможность выполнения функцией или оператором различных действий в зависимости от типа операндов называется:
 
Перечислить действия, которые необходимо выполнить для успешного выполнения написанной вами программы
 
                       

 


Тест 2 тема «Начальные сведения»

 

1. Дайте краткую характеристику принципов, которые сочетает в себе язык C++.

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

a) Pascal – это______________ язык, C++ – это____________________ язык

b) в качестве образца по отношению к объекту выступает____________

c) двумя основными компонентами объекта являются________ и _____________

d) объединение данных и функций называется_________________

e) возможность выполнения функцией или оператором различных действий в зависимости от типа операндов называется__________________

f) программа на С++ обычно вводится в компьютер с помощью программы _________________

g) в системе С++ перед началом этапа компиляции выполняется программа _________________ _________________________________________________________________________________

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

i) выполнение каждой программы на С++ начинается с функции___________________________

j) ___________начинает тело каждой функции, а ___________ заканчивает тело каждой функции

k) каждый оператор заканчивается ___________________

l) управляющая последовательность \n представляет символ _______________________________

3. Укажите, что из нижеследующего верно или неверно. Если неверно, то объясните почему.

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

b) всем переменным, когда они объявляются, должен быть присвоен тип

c) С++ рассматривает переменные number и Number как одинаковые

d) операция вычисления остатка (%) может быть использована только с целыми числами

e) все арифметические операции *, /, %,+,- имеют одинаковый уровень приоритета

f) программа на С++, которая выводит три строки, должна содержать три оператора вывода, использующих cout

4. Напишите один оператор С++, соответствующий следующему:

a) объявите переменные c, number, year типа int

b) напечатайте сообщение «Это программа на С++» так, чтобы на каждой строке было только одно слово

c) напечатайте сообщение «Это программа на С++» так, чтобы каждое слово было отделено от следующего знаком табуляции

5. Напишите операторы или комментарии, соответствующие следующему:

a) Заявить, что программа будет вычислять произведение трех целых чисел

b) Объявить переменные x, y, z и result типа int

c) Предложить пользователю ввести три целых числа

d) Считать три целых числа с клавиатуры и сохранить их в переменные

e) Вычислить произведение трех целых чисел, содержащихся в переменных x, y, z и результат присвоить переменной result

f) Напечатать «Произведение равно» и потом значение переменной result

6. Что печатается, если это возможно, при выполнении каждого из следующих операторов. Если ничего не печатается, то ответьте «ничего». Предполагается, что x = 2, y = 3.

a) cout << x; b) cout << x + x; c) cout<<”x=”; d) cout<<”x=”<<x; e) z=x+y; f) cin>>x>>y;

g) // cout<<”x+y=”<<x+y; h) cout<<”\n”;

7. Какие из следующих операторов С++ содержат переменные, значения которых уничтожаются:

a) cin>>b>>c>>d>>e>>f; b) p=i+j+k=7; c) cout<<”a=5”;

8. Какие из следующих операторов С++ верны для уравнения y=ax3 + 7:

a) y = a * x * x * x + 7; b) y = a * x * x * (x + 7); c) y = (a * x) * x * (x + 7);

d) y = (a * x) * x * x + 7; e) y = a * (x * x * x) + 7; f) y = a * x * (x * x + 7);

9. Что печатает следующий оператор: cout < < “*\n**\n***\n****\n*****\n”;

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

4 2 3 3 9

 


Тест 3 тема «Основы программирования на C++»

  1. Как называются модули, из которых состоит программа C++?
  2. Что делает следующая директива препроцессора #include<iostream.h>?
  3. Какой оператор следует использовать, чтобы вывести фразу “Hello, world” и перейти на начало следующей строки?
  4. Какой оператор следует использовать, чтобы создать целочисленную переменную с именем cheeses?
  5. Какой оператор следует использовать, чтобы присвоить переменной chesses значение 32?
  6. Какой оператор следует использовать для ввода значения с клавиатуры и присвоения его переменной cheeses?
  7. Какой оператор следует использовать для вывода предложения “ We have X kg of cheeses “, где буква X заменяется текущим значением переменной cheeses?
  8. Какую информацию о функции дает следующий заголовок функции: int froop(double t)?
  9. В каком случае при определении функции не используется ключевое слово return?
  10. Напишите программу, которая запрашивает значение расстояния в световых годах и отображает значение расстояния в астрономических единицах. Используйте следующую формулу преобразования: 1 световой год=63240 астрономических единиц.

 

 

Тест 4 тема «Основы программирования на C++»

 

1. Почему в языке C++ имеется несколько типов целочисленных данных?

2. Определите следующие переменные:

a) Типа short со значением 80

b) Типа unsigned int со значением 42110

c) Целочисленного типа со значением 3 000 000 000

3. Что происходит в языке C++ при превышении предельных значений целочисленных данных?

4. Чем различаются числа 32L и 32?

5. Присвоение типа long переменной типа float может привести к ошибке округления. Приведите примеры. А что будет в случае присвоения значения типа long переменной типа double?

6. Вычислите следующие выражения по правилам языка C++:

a) 8*9+2

b) 6*3/4

c) 3/4*6

d) 6.0*3/4

e) 15%4

7. Предположим, что x1 и x2 – это две переменные типа double, которые вам требуется сложить как целочисленные данные и присвоить целочисленной переменной. Напишите оператор языка C++, выполняющий эту задачу.

8. Напишите программу, которая запрашивает ваш рост в см(с точностью до см), а затем выражает его в метрах и см.

 


Тест 5 тема «Основы программирования на C++»

1. Разделение программы на функции:

a) является ключевым методом объектно-ориентированного программирования

b) упрощает представление программы

c) сокращает размер программного кода

d) ускоряет процесс выполнения программы

2. После имени функции ставятся:

3. Тело функции заключается в:

4. В чем состоит особенность функции main()?

5. Конструкция C++, указывающая компьютеру выполнить какое-либо действие, называется:

6. Напишите примеры комментариев.

7. Выражение:

a) всегда приводит к вычислению значения

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

c) всегда происходит вне функции

d) является частью оператора

8. Какой тип данных является аппаратно-зависимым?

9. Истинно ли следующее утверждение: переменная типа char может хранить значение 301?

10. Укажите, к каким элементам программы относятся следующие:

a) 12

b) ‘а’

c) 4.28915

d) Total

e) Total()

11. Напишите операторы, выводящие на экран:

a) значение переменной х

b) имя Jim

c) число 509

12. Истинно ли следующее утверждение: в операции присваивания величина, стоящая слева от знака равенства, всегда равна величине, стоящей справа от знака равенства?

13. Напишите оператор, выводящий значение переменной n=5.245 в поле размером 5 символом и с точностью 2 знака после запятой.

14. Какой заголовочный файл нужно включить в исходный текст, чтобы использовать объекты cin и cout?

15. Напишите оператор, который получает с клавиатуры числовое значение и присваивает его переменной temp.

16. Какой заголовочный файл нужно включить в исходный текст, чтобы использовать манипулятор setw?

17. Двумя случаями, когда компилятор обрабатывает разделительные символы, являются:

18. Верно ли следующее утверждение: нет никаких препятствий к использованию переменных разных типов в одном арифметическом выражении?

19. Значение выражения 11%3 равно:

20. Действия каких двух типов операций сочетают в себе операции арифметического присваивания?

21. Напишите оператор, увеличивающий значение переменной temp на 22 с одновременным присваиванием. Напишите аналогичный оператор, не использующий сложения с присваиванием.

22. На какую величину увеличивает значение переменной операция инкремента?

23. Какие значения выведут на экран два указанных оператора, если начальной значение переменной var1 равно 20?

cout<<var1--;

cout<<++var1;

24. С какой целью мы включаем заголовочные файлы в тексты наших программ?

25. Коды библиотечных функций содержатся в _______________ файлах.


Тест 10 тема «Массив»

 

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

a) Элементы массива должны иметь один и тот же ________ и одно и тоже __________;

b) Число, используемое для обращении к отдельному элементу массива, называется_________;

c) Процесс упорядочивания размещения элементов в массиве называется__________________;

d) Массив, использующий два индекса, называется_____________________;

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

a) Массив может много различных типов данных;

b) Индексы массива имеют тип float;

c) Если количество начальных значений в списке инициализации меньше, чем количество элементов массива, оставшиеся элементы автоматически получают в качестве начальных значений последние значения из списка инициализации;

d) Если список инициализации содержит начальных значений больше, чем элементов массива – это ошибка.

3. Напишите операторы, реализующие следующие операторы с массивом fraction.

a) Определите именованную константу arraySize с начальным значением 10;

b) Объявите массив с числом элементов arraySize типа double, имеющим нулевые начальные значения;

c) Назовите четвертый элемент от начала массива;

d) Обратитесь к элементу массива 4;

e) Присвойте значение 1,55 элементу массива 9;

f) Присвойте значение 3,15 седьмому элементу массива;

g) Напечатайте все элементы массива, используя оператор цикла for;

h) Просуммируйте и напечатайте сумму всех элементов массива.

4. Напишите операторы, реализующие следующие операции с массивом table.

a) Объявите массив, который должен быть массивом целых чисел и иметь три строки и три столбца. Полагайте, что определена целая константа arraySize, равная 3;

b) Сколько элементов содержит массив?

c) Используйте оператор цикла for для задания начальных значений каждому элементу массива, равных сумме его индексов.

d) Напишите фрагмент программы для печати каждого элемента массива table в табулированном формате с тремя строками и тремя столбцами. Полагайте, что массив получил начальные значения в объявлении
int table [arraySize] [arraySize] = { { 1, 8 }, { 2, 4, 6 }, { 5 } };
Покажите, как будут выглядеть выходные данные.

5. Рассматривается массив целых чисел intarray размером 3–на– 4.

a) Напишите объявление для intarray;

b) Сколько строк в массиве intarray?

c) Сколько элементов в массиве intarray?

d) Напишите имена всех элементов второй строки массива intarray;

e) Напишите оператор, который устанавливает в 0 элемент первой строки второго столбца;

f) Напишите оператор, который устанавливает нулевые значения всем элементам массива intarray, не используя цикл.

g) Напишите оператор ввода элементов intarray с клавиатуры;

h) Напишите последовательность операторов, которая определяет и печатает наименьшее значение в массиве intarray;

i) Напишите оператор, который выводит на экран элементы первой строки массива intarray.

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

a) arraysize = 3;

b) Допустим, что int a [ 3 ];
cout << a [ 1 ] << a [ 2 ] << a [ 3 ];

c) Допустим, что int b = { 0 };
for (int i = 0; i <= 10; i++)
b [ i ] = 1;

d) Допустим, что a [ 2 ] [ 2 ] = { { 1, 2 }, { 3, 4 } };
a [ 1, 1 ] = 5.


Тест 11 тема «Массивы»

1.Сформулируйте условия, проверяемые программой в терминах "текущий, предыдущий, следующий". Определите переменные, имеющие смысл "текущей" и "предыдущей".

a) int A[n]; int n;for (int m=0, k=0, i=1; i<n; i++)if (A[i-1]<A[i]) k++; else { if (k>m) m=k; k=0;}
b) int A[]; int n; int found;do { found =0; for (i=0; i<n-1; i++) if (A[i] > A[i+1]) { int cc; cc = A[i]; A[i]=A[i+1]; A[i+1]=cc; found++;} }while(found!=0);
c) int A[]; int n; for (int i=0, k=-1, nn=0; i<n; i++) { if (A[i]< 0) continue; if (k!=-1 && A[k] < A[i]) nn++; k=i; }

2.Опишите процесс перемещения элементов массива.

a) for (s=A[0], i=1; i < 10; i++) A[i-1] = A[i]; A[9] = s;
b) for (i=0; i< 5; i++) { c=A[i]; A[i]=A[9-i]; A[9-i]=c; }
c) for (i=0, j=9; i < j; i++, j--) { c=A[i]; A[i]=A[j]; A[j]=c; }

3.Объясните назначение пустого цикла.

char c[];int i,j;for (i=0; c[i]!='\0'; i++);for (j=0,i--; i>j; i--,j++){ char s; s=c[i]; c[i]=c[j]; c[j]=s; }

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

a) for (i=0; i< 10; i++) if (A[i]< 0) break;
b) for (s=0, i=0; i < 10 && A[i] > 0; i++) s = s + A[i];
c) for (s=0, i=0, k=0; i < 10 && k ==0; i++){ s = s + A[i]; if (A[i]<=0) k=1; }
d) for (i=0; i< 10; i++) {for (j=2; j<A[i]; j++)if (A[i]%j==0) break;if (j==A[i]) break; }if (i!=10) cout<<("Good\n"); e) for (i=0,a=2; a<100; a++){for (n=2; n<a; n++) if (a%n==0) break; if (n==a) A[i++]=a;}A[i]=0;

Тест 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) Значение аргумента по умолчанию:



Поделиться:


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

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