Вопросы к коллоквиуму по Программированию 2-го курса

Билеты коллоквиума будут браться из списка приведенных ниже вопросов.

Коллоквиум проводится на семинаре письменно. Время опроса – 45 минут.

Если вопрос предполагает двойное толкование, то студент должен описывать свое понимание ответа. Преподаватель вправе оценить это понимание по своему усмотрению.

 

  1. Арифметические операции (23шт). Оператор присваивания, как бинарный оператор, его значение.
  2. Бессылочная реализация списков. Определение переменных, необходимых для реализации. Определение функции добавления элемента в бессылочный список.
  3. В каком случае допустимо использование #include "mysuperlib.h"? В каком случае допустимо использование #include <mysuperlib.h>?
  4. Дано вещественное число x . Пользуясь только операцией умножения и присваивания, получить в переменные y и z значения x в степени 5 и x в степени 13 соответственно за пять умножений.
  5. Двунаправленные списки. Описание типов, необходимых для реализации (два типа). Определение одной из функции списка.
  6. Дек. Различные реализации. Описания типов для различных реализаций. Реализация одной из функций дека.
  7. Деревья поиска. Определение. Основные операции. Описание типов, необходимых для реализации (два типа). Реализация функции поиска элемента без рекурсии.
  8. Директивы препроцессора: #define, #undef, #if..#else..#endif, #ifdef, #pragma once. Правила хорошего тона при оформлении оператора #define.
  9. Директивы препроцессора: #include. Правила оформления (с помощью директив #ifdef/#define и #pragma once)
  10. Для значений какого типа данных отводится 8 бит?
  11. Идеально-сбалансированные деревья. Определение. Построение. Какие операции можно выполнять? Связь с идеально-сбалансированными’ деревьями.
  12. Идеально-сбалансированные’ деревья. Определение. Построение. Какие операции можно выполнять? Связь с идеально-сбалансированными деревьями.
  13. Какая комбинация знаков соответствует операции декрементирования?
  14. Какая комбинация знаков соответствует операции присваивания с суммированием?
  15. Какие объекты передаются в функции в языке С по ссылке?
  16. Какие способы передачи параметров в функции существуют в различных языках программирования?
  17. Какое значение будет иметь переменная b после выполнения оператора: int i, b, r, x;i=2; b=i; r=b; x=r;do {               b=(b+r)%2;        r=x/(i+1);            i++; }while (r>=3 || r<=-3);
  18. Какое значение будет иметь переменная i после выполнения оператора (переменные i, b, r, x имеют тип int): for (i=2, b=1, r=0, x=5; r>3 || r<-3; ) {b+=r; r=r*x-i; i-=(r-b); }
  19. Какое значение будет иметь переменная i после выполнения оператора: int i, b, r, x;for (i=5, b=2, r=4, x=2; r>3 || r<-3; ) {         b+=r;     r=r*x-i; i-=(r-b); }
  20. Какое значение будет иметь переменная p после выполнения операций: int p=3, x=6;if ((p%x)>2) p=p+x;else {      if (p%2==0) p=p-x;         else p=-p-x; }
  21. Какое значение будет иметь переменная p после выполнения операций: int p=3;switch (p<<1) {               case 2: break;    case 3: p+=1; break;       case 4: p=p+2;  default: p=0; }
  22. Какое служебное слово используется для завершения текущей итерации цикла (продолжение цикла при помощи перехода к следующей итерации)?
  23. Какое служебное слово является заголовком оператора цикла с постусловием?
  24. Какое служебное слово является заголовком оператора цикла с постусловием?
  25. Какой знак соответствует операции остаток от деления целых чисел
  26. Какой знак соответствует операции получения адреса операнда?
  27. Какой знак соответствует операции получения остатка от деления целочисленных операндов?
  28. Какой знак соответствует операции поразрядного инвертирования внутреннего двоичного кода целочисленного аргумента (побитовое отрицание)?
  29. Какой синтаксис (функциональная схема) соответствует конструкции if-else?
  30. Какой синтаксис соответствует конструкции do-while?
  31. Какой тип данных имеет диапазон значений 0...+255?
  32. Логические операции (7шт). Выражения, воспринимаемые как логические.
  33. Математическая библиотека. Основные функции. Правила использования функций pow(), округления.
  34. Может ли прототип double sign(double); являться прототипом функции с заголовком double sign(double k)?
  35. Можно ли использовать "continue" внутри оператора switch?
  36. Можно ли использовать "return" внутри оператора switch?
  37. Написать функцию, рекурсивно (!) определяющую является ли целое число N точной степенью двойки. Привести пример вызова такой функции.
  38. Напишите выводимое значение. int mass[]={1, 6, 9, 2, 5};int *mass2 = &mass[3];printf("%d", mass2[-1]);
  39. Напишите десятичное значение «-16» в прямом, обратном и дополнительном двоичном коде (ответ дать в 8битном представлении).
  40. Напишите значение выражения: (!1)+(!0)+(!(-5)).
  41. Напишите значение выражения: (!18)-(5<<2)+(6^5).
  42. Напишите значение выражения: (3==5)? 3 : 5.
  43. Напишите значение выражения: (4<<2)+(6&5)-(6^5);
  44. Напишите значение выражения: (5<<1)+(3!=5)+(13%(-4))+((-17)%4)
  45. Напишите значение выражения: (7>>1)+((4^7)%5);
  46. Напишите значение выражения: 3+4>5 && 3+5>4 && 4+5>3;
  47. Напишите идентификатор, определяющий действия при отсутствии нужного варианта в операторе switch?
  48. Напишите идентификатор, соответствующий операции определения размера операнда?
  49. Напишите название базового типа данных, который указывает на целое число увеличенной длины (длинное целое).
  50. Напишите название директивы макроподставноки.
  51. Напишите название директивы препроцессора определения макроса или препроцессорного идентификатора.
  52. Напишите название директивы препроцессора проверки неопределённости идентификатора.
  53. Напишите название квалификатора, который можно использовать с базовыми типами данных для установления «короткого» целого числа.
  54. Напишите название квалификатора, который можно использовать с базовыми типами данных для установления значений со знаком.
  55. Напишите название оператора, который возвращает размер в байтах переменной или типа?
  56. Напишите название функции арксинуса, принадлежащей математической библиотеке.
  57. Напишите название функции записи символа в файл.
  58. Напишите название функции установки произвольной позиции в файле.
  59. Напишите название функции форматированного чтения из файла.
  60. Напишите название функции, возвращающей значение натурального логарифма
  61. Напишите название функции, возвращающей значение первого числа в степени второго
  62. Напишите название функции, возвращающей наибольшее целое, не превышающее данное значение.
  63. Напишите название функции, выполняющей выделение памяти и перенос в неё копию заданной строки.
  64. Напишите название функции, выполняющей поиск второй заданной строки в первой.
  65. Напишите название функции, выполняющей сравнение заданных строк.
  66. Напишите название функции, выполняющей сцепление строк символов.
  67. Напишите название функции, вычисляющей ближайшее целое, не меньшее, чем данный вещественный аргумент
  68. Напишите название функции, считывающей один символ из файла.
  69. Напишите название функции, считывающей очередной символ из стандартного входного потока (stdin).
  70. Напишите последовательность символов, выводимую при выполнении кода: … int main () {char str[] = "12345678910"; char * pch;pch=strchr(str,'5'); printf ("%s\n", pch);return 0;}
  71. Напишите последовательность символов, выводимую при выполнении кода: … int main(void) {char s1[80], s2[80];strcpy(s1, "A1"); strcpy(s2, "B2"); strcat(s1, s2);printf("%s", s1); return 0; }
  72. Напишите последовательность символов, выводимую при выполнении кода: … int main(void) {int a=27;char str[] = "12345678910";printf("%2s\n", str);return 0;}
  73. Напишите последовательность символов, используемую внутри printf для выведения вывода вещественного числа в поле из 7 позиций.
  74. Напишите последовательность символов, используемую внутри printf для выведения двойных кавычек.
  75. Напишите последовательность символов, используемую внутри printf для выведения строки символов.
  76. Напишите последовательность символов, используемую внутри printf для выведения табуляции.
  77. Напишите последовательность символов, используемую внутри printf для выведения указателя.
  78. Напишите последовательность символов, используемую внутри printf для выведения целого десятичного числа.
  79. Напишите последовательность символов, используемую внутри printf для выведения числа в экспоненциальной форме.
  80. Напишите последовательность символов, используемую внутри printf для выведения числа с двойной точностью.
  81. Напишите последовательность символов, используемую внутри printf для выведения шестнадцатеричного числа.
  82. Напишите последовательность символов, используемую внутри printf для печати в выводимой строке не менее 15 символов.
  83. Общая структура С-программы. Оформление include-файлов. Что может содержаться в include-файлах и что в C-файлах.
  84. Однонаправленные списки. Описание типов, необходимых для реализации (два типа). Определение одной из функций списка.
  85. Операторы перехода (break, continue, goto). Описать случаи, когда использование оператора goto является дурным тоном и когда оно необходимо.
  86. Операторы условия и выбора (if, switch). Объяснить принцип реализации оператора switch на уровне машинных команд.
  87. Операторы цикла (for, while, do-while). Оператор запятая.
  88. Операция ? : . Рекурсивное использование данного оператора.
  89. Опишите ситуацию, в которой sizeof(x) возвращает значение, отличное от 10, в случае если x описывается как char x[10].
  90. Основные скалярные типы (различные целые, вещественные). Формат представления констант (различных целых, различных вещественных, символьных, строковых).
  91. Очередь. Различные реализации. Описания типов для различных реализаций. Реализация одной из функций очереди.
  92. Почему при выполнении функции printf(“1”) на экране может ничего не появиться. Как исправить эту ситуацию?
  93. Представление целых и вещественных чисел в ЭВМ. IEEE-стандарт представления вещественных чисел. Объяснить логику компилятора, не позволяющего сравнивать на равенство вещественные числа.
  94. Работа с бинарными файлами. В том числе, использование функций fseek()/ftell()
  95. Работа с текстовыми файлами. Правила использования функции fgets(). Считывание строк неограниченной длины с помощью функции fgets().
  96. Реализация списков с самостоятельным выделением памяти. Описание типов, необходимых для реализации (два типа). Определение одной из функций списка.
  97. Стандартная библиотека ввода-вывода: семейство функций printf(). Основные спецификации формата. Объяснить путаницу в gcc с форматами %f и %lf
  98. Стандартная библиотека ввода-вывода: семейство функций scanf().Основные спецификации формата (в том числе форматы %n и [] с примерами использования).
  99. Стек. Различные реализации. Описания типов для различных реализаций. Реализация одной из функции стека.
  100. Строки в языке С, принципы организации, основные функции (strlen, strcat, strcpy, strdup,strcmp, strstr, strchr)
  101. Указатели и массивы. Использование. Указать что общего, что различного и в каких случаях их использование дает различный результат.
  102. Функции и прототипы, оператор return. Объяснить логику компилятора, не позволяющего без описания определять функции перед использованием.
  103. Циклические списки. Описание типов, необходимых для реализации (два типа). Определение одной из функций списка.
  104. Чем отличается предназначение конструкции if-else от конструкции #if-#else-#endif?
  105. Чем отличается функция printf от функции fprintf.
  106. Чем является "а" в выражении double *a;?
  107. Что может являться прототипом функции func?:  а) func(x); б) void func(double); в) double func(double x); г) int fun(double x);
  108. Что появится на экране при выполнении функции printf(“%d\n”,~-2);