Скачать 224 Kb.
|
ПРОВЕДЕНИЕ ЭКЗАМЕНА ПО ДИСЦИПЛИНЕ «ПРОГРАММИРОВАНИЕ» До экзамена по дисциплине «Программирование» допускаются студенты:
Экзамен проводится в письменной форме. Студенту выдается билет, содержащий 8 экзаменационных заданий. На выполнение заданий отводится 1 час. После проверки экзаменационных заданий преподавателем (для уточнения оценки в спорных ситуациях) студенту могут быть заданы дополнительные (устные) вопросы по экзаменационным заданиям. Экзаменационные задания выполняются индивидуально. При выполнении экзаменационных заданий ЗАПРЕЩАЕТСЯ использовать:
ПРИМЕРЫ ЭКЗАМЕНАЦИОННЫХ ЗАДАНИЙ 1. Задания по теме «Язык С/С++. Основные понятия» 1.1. Запишите значения следующих констант в десятичной форме. 13 013 0x13 5.3 5.3E2 1.2. Сколько места в памяти программы (в байтах) занимают следующие переменные? long int a; signed long long b = 20; char c; float d; 1.3. Обозначьте области видимости всех переменных программы (в диапазонах строк). Какие переменные являются локальными, а какие –глобальными?
1.4. Объявите следующие переменные, используя наиболее подходящие типы данных:
1.5. Объявите следующие идентификаторы.
2. Задания по теме «Выражения и операции» 2.1. Определите значения выражений. 10/4 + 5.0/2 + 4%3 10>0&&1==3&&4>=4 (14|5)^12 (15>>2)<<2 2.2. Имеется целочисленная переменная C (unsigned char C).
3. Задания по теме «Операторы присваивания, инкремента, декремента» 3.1. Определите окончательные значения переменных int a = 10; a %= 3; int b = 12; int c = 2; b >>= c; 3.2. Определите окончательные значения переменных int a = 10; a /= 3; int b = 12; int c = 2; b += c; c ^= 3; 3.3. Определите окончательные значения переменных int a = 1; int b = ++a; int c = a++; 3.4. Определите окончательные значения переменных int a = 5; int b = 3; int c = ++a - b--; 4. Задания по теме «Условные операторы» 4.1. Определите окончательные значения переменных x, y и z int x=1, y=1, z=1; if (x>y+z || y>=x) { x=x+2; if (x>y) y=y+2; else z=z-1; } else { if (z z=z+1; else x=x*2; } 4.2. Определите окончательные значения переменных x и y int x = ((2>5)?3:4)+2; int y = (x<7)?x:x*x; 4.3. Определите окончательное значение переменной x при n=0,1,2,3,4. int x=0; switch (n) { case 0: case 1: x++; case 2: x++; break; case 3: x++; default: x++; } 4.4. Определите окончательное значение переменной x при n=0,1,2,3. int x=0; switch (n) { case 0: case 1: x++; case 2: x++; default: x++; } 4.5. Запишите алгоритм на языке С++ с использованием оператора if. 5. Задания по теме «Циклы» 5.1. Определите окончательные значения переменных x и y int x=0; int y=0; while (x<5) { if (x%2==0) y=y+3; else y=y+1; x++; } 5.2. Определите, что будет выведено на экран в результате работы программы int x=14; do { cout << x; x=x-3; cout << x; } while (x>5); 5.3. Определите, что будет выведено на экран в результате работы программы for (int i=0; i<50; i++) { if (i>2 && i<48) continue; cout << i; } 5.4. Определите окончательное значение переменной Q int Q=0; for (int i=0; i<50; i++) { if (i>10) break; if (i>7) continue; Q=Q+1; } 5.5. Запишите представленный алгоритм на языке С++, используя оператор цикла for 5.6. Запишите представленный алгоритм на языке С++, используя оператор цикла while 5.7. Определите суммарное количество итераций внутреннего цикла for for (int i=0; i<4; i++) for (int j=0; j5.8. Определите окончательное значение переменной Z int Z=0; for (int i=0; i<3; i++) { Z=Z+1; for (int j=i; j<4; j++) Z=Z+1; } 6. Задания по теме «Массивы» 6.1. Объявите следующие массивы:
6.2. Сколько места в памяти занимают следующие массивы: long A[10] = {1, 2, 3}; char B[20]; float C[] = {1.1, 2.2, 3.3}; short D[2][3]; bool E[2][3][2]; 6.3. Определите, что будет выведено на экран в результате работы программы. int X[] = {1,2,3,4,5}; int Z[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; cout << X[1] << X[3] << Z[1][1] << Z[2][1]; 6.4. Определите, что будет выведено на экран в результате работы программы. int X[100][100]; for (int i=0; i<100; i++) for (int j=0; j<100; j++) X[i][j]=i*j; for (int i=0; i<100; i++) X[i][i]=X[i][i]+1; cout << X[12][10] << " " << X[10][10]; 6.5. Какие массивы объявлены некорректно (в нарушение правил языка С) и почему? const int x=10; int A[x]; int y=20; int B[y]; int C[10]; int D[]; int E[] = {1,2,3}; 6.6. Какое количество сравнений потребуется выполнить для упорядочивания массива A методом выбора (по возрастанию)? const int n=4; int A[n] = {8,6,3,9}; // УПОРЯДОЧИВАНИЕ МЕТОДОМ ВЫБОРА for (int i=0; i { int min_ind = i; int min_val = A[i]; for (int j=i+1; j if (A[j] { min_ind = j; min_val = A[j]; } A[min_ind] = A[i]; A[i] = min_val; } 6.7. Какое количество сравнений потребуется выполнить для упорядочивания массива A методом пузырька (по возрастанию)? const int n=4; int A[n] = {8,6,3,9}; // УПОРЯДОЧИВАНИЕ МЕТОДОМ "ПУЗЫРЬКА" bool t; // do { t = true; for (int i=0; i if (A[i] > A[i+1]) // !!!СРАВНЕНИЕ { int temp = A[i+1]; A[i+1] = A[i]; A[i] = temp; t = false; } } while(!t); 6.8. Дана матрица целых чисел размером 10 на 10 (int X[10][10]). Запишите алгоритм (на языке С++), заполняющий матрицу таким образом, чтобы по диагонали матрицы размещались единицы (1), а в остальных ячейках матрицы – нули (0). 6.9. Запишите алгоритм на языке С++, заполняющий одномерный массив X (int X[10]) квадратами индексов его элементов (Xi = i2) 6.10. Запишите алгоритм на языке С++, копирующий содержимое массива A в массив B (N – размер массива, массивы целочисленные) 7. Задания по теме «Пользовательские типы данных» 7.1. Определите, что будет выведено на экран в результате работы программы: enum Group {UVN111, UVN112, UVN113, UIB111, UIS111}; Group X = UVN113; cout << X << UIB111; 7.2. Объявите структуру, описывающую координаты точки в пространстве (x, y, z) 7.3. Объявите переменную Z, относящуюся к типу данных Point: struct Point { int x; int y; }; Присвойте любые значения полям переменной Z 7.4. Определите, что будет выведено на экран long x=4; cout << sizeof(x) << sizeof(bool); 8. Задания по теме «Преобразование типов данных» 8.1. Определите, что будет выведено на экран int a = 2.3; float b = 2.3; int c = 5/2.0; float d = 5/2; cout << a << " " << b << " " << c << " " << d; 8.2. Определите, что будет выведено на экран float a = float(5/2); float b = float(5)/2; float c = int(5.0/2.0); float d = 5.0/2.0; cout << a << " " << b << " " << c << " " << d; 8.3. В каких инструкциях программы осуществляется явное преобразование типов данных, а в каких – неявное? (рассматриваются только взаимные преобразования между целыми и вещественными типами)
9. Задания по теме «Адреса переменных, указатели, ссылки» 9.1. Даны идентификаторы a, b, c: int a = 10; short b[] = {2, 4, 8}; char c = 'Z';
9.2. Дан программный код: int a = 1; int b[] = {2, 4, 8}; int* x = &a; int** y = &x; int* z = b; Выведите на экран
9.3. Дан программный код: int a = 1; int b[] = {2, 4, 8}; Выведите на экран
9.4. Дан программный код: int a = 1; void* ptr = &a; Выведите на экран значение переменной a через указатель ptr 9.5. Дан программный код: int a = 1; int b = 1; int* x = &a; int* y = &b; Определите значения следующих выражений: x==y *x==*y &x==&y 9.6. Дан программный код: int c[] = {10,2,30,4,50}; int* z = c+1; Определите значения следующих выражений: c *c<*z c-z *c-*z 9.7. Определите, что будет выведено на экран: int A = 10; int &B = A; int C=5; B=C; A++; B++; cout << A << " " << B << " " << C; 9.8. Определите, что будет выведено на экран: double X[] = {1,2,3}; short* p1 = (short*)X; short* p2 = (short*) &(X[2]); short* p3 = (short*)(X+1); cout << (p2-p1); cout << (p3-p1); 10. Задания по теме «Динамическое выделение памяти» 10.1. Выделите память (динамически) под массив из 5 целых чисел. 10.2. Выделите память (динамически) под массив из 10 целых чисел. Присвойте всем элементам массива нулевые значения. Освободите память, выделенную под массив. 10.3. Завершите программу, освободив память, выделенную под динамические переменные. int A = 10; int* B = new int; int* C = new int[4]; 10.4. Определите, в каких областях памяти (область кода, область данных, стек, куча) размещаются данные, выделенные (серым цветом) в исходном коде программы:
11. Задания по теме «Функции» 11.1. Определите значение переменных a, b, c int func(int x, int y) { return x+2*y; } void main() { int a = func(2,4); int b = func(2, func(1,4)); int c = func(1, func(0, func(4, 0))); } 11.2. Определите значение переменных a, b, c void func(int& x, int y, int* z) { x=0; y=0; *z=0; } void main() { int a = 1; int b = 2; int c = 3; func(a,b,&c); } 11.3. Определите, какие вызовы функции func ошибочны?
11.4. Определите значение переменных a, b и c int f1(int* p, int N) { int res=0; for (int i=0; i res = res + p[i]; return res; } int f2(int* p, int* q, int N) { int res=0; for (int i=0; i res = res + p[i]*q[i]; return res; } void main() { int X[] = {1,2,3}; int Y[] = {0,2,4,6}; int a = f1(Y,4); int b = f1(X,2); int c = f2(X,Y,2); } 11.5. Определите значение переменных a, b и c int f(int a=2, int b=3) { return a+b; } void main() { int a = f(10,10); int b = f(4); int c = f(); } 11.6. Определите значение переменных a, b и c double F(int a, int b) { return a*b; } double F(int a, double b) { return a+b; } void main() { double x = 7; double a = F(3,3); double b = F(1,x); double c = F(2,2.4); } 11.7. Определите значение переменных a, b и c int F(int x) { return (x>0)? x*F(x-1) : 1; } void main() { int a = F(1); int b = F(3); int c = F(4); } 12. Задания по теме «Строки» 12.1. Сколько места в памяти занимают массивы A, B, C и D: char A[] = ""; char B[] = "HELLO"; char C[10] = "OK"; char D[] = "OK\n\n"; 12.2. Объявите следующие строки:
12.3. Напишите программный код, исправляющий ошибки в строке: char str[] = "СДЕСЬ ЕСТЬ АШИБКИ"; 12.4. Определите содержимое строки res: char str[100] = "Однажды в студеную зимнюю пору"; strcpy(str, "ABCDE"); char* res = str+2; 12.5. Определите содержимое строки res: char str[100] = "ABC"; strcat(str,"123"); char* res = str+1; 13. Задания по теме «Файловый ввод-вывод» 13.1. Определите содержимое файла TEST.TXT: FILE* f = fopen("TEST.TXT","w"); int a=10; int b=20; fprintf(f,"%d+%d=%d",a,a,b); fclose(f); 13.2. Определите содержимое файла TEST.TXT: FILE* f = fopen("TEST.TXT","w"); char a='1'; char b='0'; for (int i=0; i<2; i++) { fputc(a,f); fputc(b,f); } fclose(f); 13.3. Определите размер файла TEST.DAT: FILE* f = fopen("TEST.DAT","w"); short x[3] = {1,2,3}; double z=4.6; fwrite(x,sizeof(x),1,f); for (int i=0; i<2; i++) fwrite(&z,sizeof(z),1,f); fclose(f); 14. Прочие задания 14.1. Каким образом в памяти программы представлены переменные a и b? Запишите ответ в двоичном и шестнадцатеричном виде (с учетом обратного порядка следования байт «little-endian»). char a=-16; short b=22; 14.2. Каким образом в памяти программы представлены переменные a и b? Запишите ответ в двоичном виде (в прямом порядке следования байт). float a=-5.5; float b=15.25; 14.3. Определите, что будет выведено на экран в результате работы программы #define SUM(A,B) A+B void main() { cout << SUM(2,4) << " "; cout << SUM(3,5)*2; } 14.4. Определите, что будет выведено на экран в результате работы программы #define A #define B void main() { int x=2, y=3; #ifdef A cout << x*x; #else cout << x; #endif #ifndef B cout << y; #endif getch(); } ОТВЕТЫ К ПРИМЕРАМ ЭКЗАМЕНАЦИОННЫХ ЗАДАНИЙ
|