Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Фонд оценочных средств и рамочные ответы для проведения промежуточной аттестации



Приложение 2

 

Фонд оценочных средств и рамочные ответы для проведения промежуточной аттестации

по дисциплине «Основы программирования» направление 09.03.04

«Программная инженерия»

 

1. Сколько раз будет выведено на экран значение переменной i в соответствии с приведенным фрагментом программы?

for (int i=0; i<=10; i++) cout << ++i << endl;

1. 9

2. 10

3. 5

4. 6

 

2. Функция f определена следующим образом:

void f(int &a, int b, const int * c) {a++; b++; c--;}

Необходимо определить значения переменных X, Y и Z после выполнения операторов:

int X=0, Y=1, Z=2;

f(X, Y, &Z);

1. X=1, Y=2, Z=1

2. X=0, Y=1, Z=2

3. X=1, Y=1, Z=2

4. X=1, Y=1, Z=1

 

3. Укажите, что выполняется в приведенном фрагменте кода:

int *p1 = new int(5); //1

int *p2 = new int[5]; //2

int *p3 = new int; //3

1. строка 1 и 2 - выделение памяти под 5 величин типа int, p1, p2 - имя массива; строка 3 - объявление указателя на int

2. строка 1 и 2 - объявление указателя на int и инициализация выделенной динамической памяти значением 5; 3 - объявление указателя на int

3. строка 1 - объявление указателя на int и инициализация выделенной динамической памяти значением 5; строка 2 - выделение памяти под 5 величин типа int, p2 - имя массива; строка 3 - объявление указателя на int

4. разницы при объявлении переменных нет

 

4. Чему будет равно значение переменных b, c, d после выполнения программы?

#include <iostream>

using namespace std;

int sum(int a=4, int b=5);

 

int main(){

int a = 2, b = 3, c, d;

c = sum(a, b);

cin >> b; // ввод b=10

d = sum(b);

b = sum();

cout<<b<<" "<<c<<" "<<d<<endl;

return 0;

}

int sum(int a, int b){

return a+b;

}

 

1. b=5, c=5, d=14

2. b=9, c=5, d=15

3. b=9, c=5, d=14

4. Произойдет ошибка на этапе компиляции – при вызове функции sum обязательно должны указываться 2 параметра

 

5. Классический пример рекурсивного вызова функции – вычисление факториала

char factorial(int n)

{

if (n==0)

return 1;

return n*factorial(n-1);

}

...

int k=factorial(6);

Какое значение будет возвращено при вызове функции factorial(6) и сколько раз будет выполнена функция factorial в этом случае?

 

1. 720; 6

2. 720; 7

3. -48; 6

4 -48; 7

5 208; 7

7. программа работать не будет

6. Чему будет равняться значение переменной k после выполнения операторов

int k, a=4, b=5;

if (a=b)

k=1;

else

k=0;

1. 0

2. 1

3. Произойдет ошибка на этапе компиляции

 

7. Что произойдет в результате вызова следующей функции?

void func()

{

int a = 1, b = 66, c;

if(b > 50) {

int c = b - a; // (1)

}

cout << c << endl; // (2)

}

1. Результат работы функции не определён

2. На экран ничего не будет выведено

3. Будет выведено "65"



4. Во время компиляции произойдёт ошибка в строке // (1)

5. Другое

 

8. В теле функции может быть указан оператор {... return 1;}, если она возвращает значение типа:

1. void

2. void*

3. char

4. любой тип

5. int

6. double

 

9. Сколько указателей объявляется в следующей строчке:

int * x1, x2, x3;

1. 1

2. 2

3. 3

 

10. Перегрузка функций – использование одного и того же имени для разных функций. При этом действуют следующие ограничения:

1. перегруженные функции должны находиться в одной области видимости;

2. перегруженные функции должны находиться в разной области видимости;

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

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

5. не могут перегружаться функции, если их списки формальных параметров различаются только применением модификаторов const и volatile или использованием ссылки &, а типы возвращаемых значений одинаковые;

6. не могут перегружаться функции, если их списки формальных параметров различаются только применением модификаторов const и volatile или использованием ссылки &.

 

11. В С/С++ к целочисленным типам данных относят:

1. int

2. char

3. float

4. double

5. bool

6. void

 

12. Какой из нижеперечисленных вариантов отображает правильно записанный оператор if?

1. условие if;

2. if (условие);

3. if { условие };

4. if условие;

 

13. Какая из следующих операций – логическая операция И?

1. |

2. &&

3. &

4. |&

5. &|

14. Укажите правильную форму записи цикла do while

1.

do //Начало цикла do while

{

// Блок операторов

} while (/* выражение */) // конец цикла do while

 

2.

do //Начало цикла do while

{

// Блок операторов

} while (/* выражение */); // конец цикла do while

 

3.

do //Начало цикла do while

{

// Блок операторов

} while { /* выражение */} // конец цикла do while

 

15. Что будет выведено на экран в результате выполнения программы?

#include <iostream>

using namespace std;

int main()

{

for (int i = 0; i < 4; ++i)

{

switch (i)

{

case 0: cout << "0";

case 1: cout << "1"; continue;

case 2: cout << "2"; break;

default: cout << "D"; break;

}

cout << ".";

}

return 0;

}

 

1. 0.1.2.

2. Ошибка компиляции на строке " case 0: cout << "0"; "

3. Ошибка компиляции на строке " default: cout << "D"; break; "

4. 011.2.D

5. 01.2.D.

6. 0112.D.

16. Почему приведение типов данных может быть не безопасно?

 

1. Некоторые преобразования не определены компилятором, и на разных компиляторах преобразования работают по-разному

2. Можно потерять часть данных - таких, как дробная часть числа с плавающей точкой.

3. Преобразование типов безопасно

4. Можно навсегда изменить значение переменной.

 

17. Каков будет результат выполнения следующего выражения:

cout << 34 / 7 * 2;?

 

1. 9.714

2. 2.42

3. 8

4. Т.к. отсутствуют скобки, результат не определен из-за одинакового приоритета операций умножения и деления.

 

18. Что будет напечатано после выполнения кода cout << (4 << 2);?

1. 42

2. 24

3. 16

 

19. Каков будет логический результат выражения

!(1 &&!(0 || 1) && (!false || false))?

 

1. true

2. false

3. Неоднозначно

 

20. В каком случае можно не использовать фигурные скобки в операторе if?

 

1. Если в теле оператора if два или более операторов

2. Если в теле оператора if только один оператора

3. Не имеет значения, т.к. вложенность определяется величиной отступа

4. Нет правильного ответа

 

21. Укажите правильное объявление указателя в C++:

 

1. float x;

2. ptr x;

3 ptr* x;

4. float* x;

5. size_t x;

6. double& x;

7. double x*;

8. *int x;

 

22. Выберите правильное определение массива:

 

1. Массив это набор разнотипных или однотипных элементов, расположенных друг за другом. Обращение к элементам происходит через адрес первого элемента.

2. Массив это набор однотипных элементов, расположенных друг за другом. Обращение к элементам происходит через адрес первого элемента.

3. Массив это набор однотипных элементов, которые могут располагаться не друг за другом. Обращение к элементам происходит через адрес первого элемента.

4. Массив это набор однотипных элементов, которые могут располагаться не друг за другом. Обращение к элементам происходит через имя каждого элемента массива.

 

23. В какой из следующих строк используется операция взятия адреса?

1. a;

2. *a;

3. address(a);

4. &a;

5. **a;

 

24. Объявлена переменная char ch;. Какое выражение не верно?

1. ch = 7;

2. ch = "7";

3. ch = '7';

 

25. В каких строках приведены корректные примеры выделения динамической памяти?

1. float* a = new sizeof(float * 10);

2. float a = new float(10);

3. float* a = new float[10];

4. float *a = new 10;

5. float a = new float[10];

6. float * a = new float;

7. float * a = new float(10);

 

26. Как правильно освободить память, зарезервированную под динамический массив arr с помощью операции new? int * arr =new int [10];

 

1. delete [ ] arr;

2. delete arr;

3. delete arr[ ];

4. [ ] delete arr;

5. free (arr);

 

27. Укажите статическую строку

 

1. "Статическая строка"

2. 'Статическая строка'

3. char str[100];

 

28. Укажите правильное объявление массива

 

1. int awesome_array[50];

2. awesome_array{50};

3. int awesome_array = int[50];

4. int array awesome_array[50];

 

29. Какой заголовочный файл содержит инструкции файлового ввода/вывода?

 

1. iostream

2. infstream

3. fstream

4. iofstream

5. Другой

 

30. Какой из следующих классов обрабатывает процесс записи в файл?

 

1. iostream

2. infstream

3. ostream

4. fileiostream

5. Другой

 

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

double *func(double x, int y, float z);

1. float

2. float*

3. int*

4. double*

5. int

6. double

7. Неизвестно

 

32. Что будет выведено на экран после выполнения этой программы?

#include <iostream>

using namespace std;

int foo(int x);

int foo(int y)

{

return x - 1;

}

 

int main()

{

int x = 3;

int y = 4;

 

cout << foo(x) << endl;

 

return 0;

}

 

1. 2

2. 3

3. 4

4. 5

5. 6

6. 7

7. Ошибка компиляции

33. Что из перечисленного ниже не является прототипом функции?

 

1. int x();

2. int funct(char c1, char c2);

3. double fun(int x)

4. void f();

5. float *f(int x);

 

34. Пусть в программе заданы 2 целочисленные переменные

int a=0x29;

int b=0x14;

Что будет выведено на экране, если выполнить следующий код?

cout << ((a | b) >> 2);

1. 7

2. 31

3. 15

4. 8

5. 32

6. 3

7. 1

 

35. Пусть имеется динамически выделенный массив из 10 элементов:

float **arr = new float*[10];

Необходимо значение arr[5] поместить в переменную. Какой будет тип у этой переменной?

 

1. int

2. float

3. double

4. float*

5. int*

6. char

 

36. Эквивалентен ли вывод на экран в следующих строках программы:

cout << 5 / 2 << endl;

cout << 5 / 2.0 << endl;

1. Да

2. Нет

 

 

37. Что будет выведено на экран после выполнения следующей программы?

#include <iostream>

using namespace std;

 

int main()

{

int a = 3;

 

if (a) // a == 1

cout << "1" << endl;

else

if(a << 1) // a == 2

cout << "2" << endl;

else

if(a << 1) // a == 3

cout << "3" << endl;

else // a == 4

cout << "4" << endl;

return 0;

}

1. 1

2. 2

3. 3

4. 4

5. Ничего не напечатается.

 

38. Что будет выведено на экран после выполнения следующего фрагмента программы:

char str[] = "123456789";

str[5] = 0;

cout << str << endl;

 

1. 123450789

2. 12345

3. 123450000

4. 1234

7. Другое

 

 

39. Пусть имеется следующий фрагмент программы:

int a = 5;

int m[5]={5, 2, 3, 4};

int* b = m;

a++; b++;

cout << a << " " << *b << endl;

 

Что будет выведено на экран?

1. 6 5

2. 5 5

3. 6 2

4. 6 и какой-то адрес

 

40. Чему будет равна переменная "а" после выполнения следующего фрагмента программы?

int a = 5;

for (int i = 4; i; i--)

{

if (i > 2 && i < 4) continue;

a++;

}

 

1. 7

2. 8

3. 9

4. 5

5. 6

 

 

41. Что будет выведено на экран после выполнения следующего кода?

unsigned short a = 15;

unsigned short b = 0xF;

 

if (a &!b)

cout << "1" << endl;

else

cout << "2" << endl;

 

1. 1

2. 2

3. Ошибка

 

42. Чему будет равняться переменная "а" после выполнения следующего кода?

float a = 0.1;

for (int i = 0; i < 1000; i++)

a += 0.1;

 

1. 100

2. 10

3. 1000

4. 110

5. 100.1

6. 1000.1

7. Точный ответ неизвестен

 

43. Какой из приведенных фрагментов кода для выделения памяти под двумерный массив размером 5 на 5 является корректным?

1. int** arr = new int[5];

for (int i = 0; i < 5; i++)

arr[i] = new int[5];

 

2. int** arr = new int*[5];

for (int i = 0; i < 5; i++)

arr[i] = new int[5];

 

3. int** arr = new int[5];

for (int i = 0; i < 5; i++)

arr[i] = new int[i];

 

4. int** arr = new int*[5];

for (int i = 0; i < 5; i++)

arr[i] = new int[i];

 

5. int* arr = new int[5][5];

 

6. int** arr = new int[5][5];

 

44. Каково назначение символа " % " в C++?

1. Операция деления с результатом в процентах

2. Символ переменной типа хеш

3. Символ записи числа в процентном представлении

4. Операция деления с остатком

 

45. Какое значение имеет переменная "x" после выполнения приведенного фрагмента кода?

int x;

1. 0x00

2. Значения не имеет

3. Случайное

4. 0 или пустая строка

 

46. Из приведенных ниже базовых типов наименьшую длину в байтах имеет:

1. short

2. char

3. double

4. int

5. unsigned short

6. unsigned char

7. unsigned int

 

47. Имеется функция, принимающая в качестве аргумента двумерный массив:

void foo(int** arr)

{

int* ptr = arr[3];

}

На что указывает указатель ptr?

 

1. На начало массива

2. На первый элемент столбца с индексом 3

3. На строку матрицы с индексом 3

4. На элемент с координатами [3,3]

 

48. Что будет на экране в результате выполнения следующего фрагмента кода?

 

int x = 22;

cout << x % 5 << endl;

 

1. 4.4

2. 4

3. 2

4. 3

 

 

49. Что произойдет, если написать следующий код и попробовать его запустить:

for(;;);

 

1. Программа не скомпилируется

2. Программа скомпилируется и при выполнении данного фрагмента впадет в бесконечный цикл

3. Программа скомпилируется и при выполнении этот фрагмент будет проигнорирован.

 

50. Сколько раз выполнится цикл в приведенном фрагменте кода?

for(int x = 0; x = 3; x++);

1. Ни разу

2. 3 раза

3. Будет выполняться бесконечно

 

51. Чему будет равно значение переменной result после выполнения следующего фрагмента программы:

int array[10]={1,2,3,4,5,6,7,8,9,0};

int* a = array;

int* b = &array[9];

int result = b - a;

1. -1

2. 8

3. 9

4. Другое

 

52. Что означает следующее объявление?

typedef int (* A)();

1. Объявляется тип, который представляет собой указатель на переменную типа int

2. Объявляется тип, который представляет собой указатель на функцию, возвращающую значение типа int

3. Объявляется указатель на переменную A целого типа

4. Объявляется константный указатель на переменную A типа int

 

53. Перечислите допустимые идентификаторы в С/С++

1. Return

2. _return

3. return

4. 1return

 

54. Если объявлен массив

int A[4] = { 1, 3 };

то каким будет значение c после выполнения кода:

int c = ++A[1] + A[2]++; // (1)

c += A[2]; // (2)

1. 0

2. 1

3. 2

4. 3

5. 4

6. 5

7. Другое

Пояснения: После выполнения строки (1) значение переменных будет:

A[1] = 4, A[2] = 1, с = 4

После выполнения строки (2) значение переменной с = 5 (4 + 1)

 

54. Укажите корректный прототип для следующей функции

int sum(int a, int b) {return a + b;}

 

1. int sum() int a, int b;

2. int sum(int a, int b)

3. int sum(int, int);

4. sum(int, int): int;

5. sum() int a, int b;

6. int sum(int a, int b);

 

55. Выберите правильное объявление функции, которой в качестве параметра должен передаваться следующий массив: int Array[10][20];

1. void func(int ** argument);

2. void func(int argument[][]);

3. void func(int argument[][20]);

4. void func(int &argument);

5. void func(int * argument);

 

56. Какая функция открывает файл?

1. open

2. FILE

3. fopen

4. fgetc

5. fgets

 

57. В директории с исполняемым файлом программы, исходный код которой, представлен ниже, находится только один текстовый файл - file1.txt.

Что будет напечатано на экране после выполнения следующего кода:

 

#include <iostream>

#include <stdio.h>

using namespace std;

 

int main()

{
FILE* file1, *file2, *file3;

file1 = fopen("file1.txt", "r");
if (file1 == NULL)
cout << "1";

file2 = fopen("file2.txt", "r");
if (file2 == NULL)
cout << "2";

file3 = fopen("file3.txt", "w");
if (file3 == NULL)
cout << "3";

return 0;

}

 

1. 1

2. 12

3. 123

4. 23

5. 2

6. 3

7. Ничего не напечатается

 

58. В директории с программой имеется файл file.txt со следующим содержанием: one two three four five

Что будет напечатано после выполнения следующего кода:

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

ifstream file("file.txt", ios::in);

char buff[10];

file >> buff;

cout << buff;

file.close();

return 0;

}

 

1. one

2. one two th

3. one two three four five

4. four five

5. five

 

59. Что будет записано в файл file.txt после выполнения программы:

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

ofstream fout("file.txt", ios_base::out);

for (int i = 0; i < 3; i++)

fout << i;

return 0;

}

 

1. 0

2. 012

3. 0

4. 0123

5. 0

6. 3

7. 4

60. Что будет выведено на экран в результате выполнения программы?

#include <iostream>

using namespace std;

int main()

{

struct ST

{

int a;

short b;

};

 

ST st1;

ST st2;

 

st1.a = 20;

st1.b = 4;

 

st2.a = 50;

st2.b = 2;

 

if(sizeof(st1) == sizeof(st2))

cout << "equal!" << endl;

else

cout << "not equal!" << endl;

 

return 0;

}

 

1. equal

2. not equal

 

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

1. результативность

2. детерминированность

3. дискретность

4. массовость

 

62. Алгоритм называется линейным, если:

1. его команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий

2. он включает в себя вспомогательный алгоритм

3. ход его выполнения зависит от истинности тех или иных условий

4. он представим в табличной форме

5. он составлен так, что его выполнение предполагает многократное повторение одних и тех же действий

 

63. Функция memcpy (прототип: void *memcpy(void *dest, const void *src, size_t n);) копирует n байт из памяти по адресу src в память с адресом dest

Что будет напечатано на экране после выполнения следующего кода?

 

#include <iostream>

#include <string.h>

 

using namespace std;

 

int main()

{

struct ST

{

unsigned short a;

unsigned short b;

};

ST* st = new ST;

unsigned short* v = new unsigned short;

 

st->a = 0xAABB;

st->b = 0xCCDD;

 

memcpy(v, st, sizeof(unsigned short));

 

cout << hex << *v << endl;

 

delete st;

delete v;

 

return 0;

}

 

1. aabb

2. bbcc

3. aadd

4. ccdd

5. Результат не предсказуем, т.к. после компиляции расположение полей "a" и "b" структуры случайно.

 

64. Известно, что байты, какой-либо переменной в оперативной памяти располагаются от младшего к старшему. Например, переменная unsigned int x = 0x00112233 в памяти будет размещаться как 33221100.

Что будет напечатано на экране после выполнения следующего кода:

 

#include <iostream>

 

using namespace std;

 

int main()

{

struct ST

{

unsigned short a;

unsigned short b;

};

 

ST* st = new ST;

unsigned char* c;

 

st->a = 0x3377;

st->b = 0x5599;

 

c = (unsigned char*)st;

c = c + 2;

 

cout << hex << (unsigned int)*c << endl;

 

delete st;

 

return 0;

}

 

1. 33

2. 77

3. 55

4. 99

5. Какой-то адрес

6. Результат не предсказуем, т.к. после компиляции расположение полей "a" и "b" структуры случайно.

 

65. Что будет напечатано на экране при попытке скомпилировать и выполнить следующий код?

 

#include <iostream>

using namespace std;

 

int main()

{

struct ST

{

int a;

int b;

};

 

ST st1;

ST st2;

 

st1.a = 124;

st1.b = 355;

 

st2 = st1;

cout << st2.a << ' ' << st2.b << endl;

return 0;

}

 

1. 124 355

2. Результат не предсказуем, т.к. после компиляции расположение полей "a" и "b" структуры случайно.

3. Ошибка компиляции на строке st2 = st1;

 

66. Выберите правильное определение алгоритма?

 

Алгоритм – это

 

1. Правила выполнения определенных действий

2. Протокол вычислительной сети

3. Набор команд для компьютера

4. Ориентированный граф, указывающий порядок выполнения некоторого набора команд.

5. Описание последовательности действий, строгое исполнение которых приводит к решению поставленной задачи за конечное число шагов

 

 

67. Дайте определение структурного программирования

 

1. Структурное программирование – это методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.

 

2. Структурное программирование – это парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

 

3. Структурное программирование - это парадигма программирования, при использовании которой программа или её фрагмент осмысливается как модель какого-либо формального автомата

 

68. Что будет напечатано на экране?

 

#include <iostream>

 

using namespace std;

 

int main()

{

int a = 5;

 

if (a < 10)

goto label1;

else

goto label2;

 

cout << 1;

return 0;

 

label1:

cout << 2;

label2:

cout << 3;

return 0;

}

 

1. 1

2. 2

3. 23

4. 3

5. Ничего

 

 

69. Будет ли работать следующий код?

 

#include <iostream>

 

using namespace std;

 

struct ST

{

int a;

int b;

};

 

ST* f()

{

ST* st = new ST;

st->a = 5;

st->b = 10;

return st;

}

 

int main()

{

ST* s = f();

 

cout << s->a << ' ' << s-> b;

 

delete s;

 

return 0;

}

 

1. Да, будет без ошибок.

2. Будет ошибка компиляции.

3. При печати полей структуры “a” и “b” будет произведено чтение области памяти, которая уже не существует.

 

 


Дата добавления: 2015-09-29; просмотров: 20 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Не было бы счастья, да несчастье помогло. Случившееся с Майклом очень сплотило семью. Теперь они не могли долго не видеться. Так что Сантана, Майкл, Кевин, Мейсон, Джессика с сыном собирались на 9 страница | - ОБРАДУЙ МЕНЯ, Хеллиман, - проворчал полковник Тонхаузер. Старый солдат говорил краем рта с тлеющей между губами сигарой. Он инстинктивно пригнулся, когда мастерскую до самого основания сотряс еще 1 страница

mybiblioteka.su - 2015-2024 год. (0.137 сек.)