Вопросы к коллоквиуму по Программированию
2-го курса
Билеты коллоквиума
будут браться из списка приведенных ниже вопросов.
Коллоквиум проводится
на семинаре письменно. Время опроса – 45 минут.
Если вопрос предполагает
двойное толкование, то студент должен описывать свое понимание ответа.
Преподаватель вправе оценить это понимание по своему усмотрению.
- Арифметические операции
(23шт). Оператор присваивания, как бинарный оператор, его значение.
- Бессылочная реализация
списков. Определение переменных, необходимых для реализации. Определение
функции добавления элемента в бессылочный список.
- В каком случае допустимо
использование #include "mysuperlib.h"? В каком случае допустимо
использование #include <mysuperlib.h>?
- Дано вещественное число x
. Пользуясь только операцией умножения и присваивания, получить в
переменные y и z значения x в степени 5 и x в степени 13 соответственно за
пять умножений.
- Двунаправленные списки.
Описание типов, необходимых для реализации (два типа). Определение одной
из функции списка.
- Дек. Различные реализации.
Описания типов для различных реализаций. Реализация одной из функций дека.
- Деревья поиска.
Определение. Основные операции. Описание типов, необходимых для реализации
(два типа). Реализация функции поиска элемента без рекурсии.
- Директивы препроцессора: #define, #undef, #if..#else..#endif,
#ifdef, #pragma once. Правила хорошего тона при оформлении
оператора #define.
- Директивы препроцессора:
#include. Правила оформления (с помощью директив #ifdef/#define и #pragma
once)
- Для значений какого типа
данных отводится 8 бит?
- Идеально-сбалансированные
деревья. Определение. Построение. Какие операции можно выполнять? Связь с
идеально-сбалансированными’ деревьями.
- Идеально-сбалансированные’
деревья. Определение. Построение. Какие операции можно выполнять? Связь с
идеально-сбалансированными деревьями.
- Какая комбинация знаков
соответствует операции декрементирования?
- Какая комбинация знаков
соответствует операции присваивания с суммированием?
- Какие объекты передаются в
функции в языке С по ссылке?
- Какие способы передачи
параметров в функции существуют в различных языках программирования?
- Какое значение будет иметь
переменная 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);
- Какое значение будет иметь
переменная 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); }
- Какое значение будет иметь
переменная 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); }
- Какое значение будет иметь
переменная 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; }
- Какое значение будет иметь
переменная p после выполнения операций: int p=3;switch (p<<1) { case
2: break; case 3: p+=1; break; case 4: p=p+2; default: p=0; }
- Какое служебное слово
используется для завершения текущей итерации цикла (продолжение цикла при
помощи перехода к следующей итерации)?
- Какое служебное слово
является заголовком оператора цикла с постусловием?
- Какое служебное слово
является заголовком оператора цикла с постусловием?
- Какой знак соответствует
операции остаток от деления целых чисел
- Какой знак соответствует операции
получения адреса операнда?
- Какой знак соответствует
операции получения остатка от деления целочисленных операндов?
- Какой знак соответствует
операции поразрядного инвертирования внутреннего двоичного кода
целочисленного аргумента (побитовое отрицание)?
- Какой синтаксис
(функциональная схема) соответствует конструкции if-else?
- Какой синтаксис
соответствует конструкции do-while?
- Какой тип данных имеет
диапазон значений 0...+255?
- Логические операции (7шт).
Выражения, воспринимаемые как логические.
- Математическая библиотека.
Основные функции. Правила использования функций pow(), округления.
- Может ли прототип double
sign(double); являться прототипом функции с заголовком double sign(double
k)?
- Можно ли использовать
"continue" внутри оператора switch?
- Можно ли использовать
"return" внутри оператора switch?
- Написать функцию,
рекурсивно (!) определяющую является ли целое число N точной степенью
двойки. Привести пример вызова такой функции.
- Напишите выводимое значение. int mass[]={1, 6, 9, 2, 5};int *mass2
= &mass[3];printf("%d", mass2[-1]);
- Напишите десятичное
значение «-16» в прямом, обратном и дополнительном двоичном коде (ответ
дать в 8битном представлении).
- Напишите значение
выражения: (!1)+(!0)+(!(-5)).
- Напишите значение
выражения: (!18)-(5<<2)+(6^5).
- Напишите значение
выражения: (3==5)? 3 : 5.
- Напишите значение
выражения: (4<<2)+(6&5)-(6^5);
- Напишите значение
выражения: (5<<1)+(3!=5)+(13%(-4))+((-17)%4)
- Напишите значение
выражения: (7>>1)+((4^7)%5);
- Напишите значение
выражения: 3+4>5 &&
3+5>4 && 4+5>3;
- Напишите идентификатор,
определяющий действия при отсутствии нужного варианта в операторе switch?
- Напишите идентификатор,
соответствующий операции определения размера операнда?
- Напишите название базового
типа данных, который указывает на целое число увеличенной длины (длинное
целое).
- Напишите название
директивы макроподставноки.
- Напишите название
директивы препроцессора определения макроса или препроцессорного
идентификатора.
- Напишите название
директивы препроцессора проверки неопределённости идентификатора.
- Напишите название
квалификатора, который можно использовать с базовыми типами данных для
установления «короткого» целого числа.
- Напишите название
квалификатора, который можно использовать с базовыми типами данных для
установления значений со знаком.
- Напишите название
оператора, который возвращает размер в байтах переменной или типа?
- Напишите название функции
арксинуса, принадлежащей математической библиотеке.
- Напишите название функции
записи символа в файл.
- Напишите название функции
установки произвольной позиции в файле.
- Напишите название функции
форматированного чтения из файла.
- Напишите название функции,
возвращающей значение натурального логарифма
- Напишите название функции,
возвращающей значение первого числа в степени второго
- Напишите название функции,
возвращающей наибольшее целое, не превышающее данное значение.
- Напишите название функции,
выполняющей выделение памяти и перенос в неё копию заданной строки.
- Напишите название функции,
выполняющей поиск второй заданной строки в первой.
- Напишите название функции,
выполняющей сравнение заданных строк.
- Напишите название функции,
выполняющей сцепление строк символов.
- Напишите название функции,
вычисляющей ближайшее целое, не меньшее, чем данный вещественный аргумент
- Напишите название функции,
считывающей один символ из файла.
- Напишите название функции,
считывающей очередной символ из стандартного входного потока (stdin).
- Напишите
последовательность символов, выводимую при выполнении кода: … int main () {char str[] =
"12345678910"; char * pch;pch=strchr(str,'5'); printf
("%s\n", pch);return 0;}
- Напишите
последовательность символов, выводимую при выполнении кода: … int main(void) {char s1[80],
s2[80];strcpy(s1, "A1"); strcpy(s2, "B2"); strcat(s1,
s2);printf("%s", s1); return 0; }
- Напишите
последовательность символов, выводимую при выполнении кода: … int main(void) {int a=27;char str[] =
"12345678910";printf("%2s\n", str);return 0;}
- Напишите
последовательность символов, используемую внутри printf для выведения вывода вещественного числа в поле из 7
позиций.
- Напишите
последовательность символов, используемую внутри printf для выведения двойных кавычек.
- Напишите
последовательность символов, используемую внутри printf для выведения строки символов.
- Напишите
последовательность символов, используемую внутри printf для выведения табуляции.
- Напишите
последовательность символов, используемую внутри printf для выведения указателя.
- Напишите
последовательность символов, используемую внутри printf для выведения целого десятичного числа.
- Напишите
последовательность символов, используемую внутри printf для выведения числа в экспоненциальной форме.
- Напишите
последовательность символов, используемую внутри printf для выведения числа с двойной точностью.
- Напишите
последовательность символов, используемую внутри printf для выведения шестнадцатеричного числа.
- Напишите
последовательность символов, используемую внутри printf для печати в выводимой строке не менее 15 символов.
- Общая структура
С-программы. Оформление include-файлов. Что может содержаться в
include-файлах и что в C-файлах.
- Однонаправленные списки.
Описание типов, необходимых для реализации (два типа). Определение одной
из функций списка.
- Операторы перехода (break,
continue, goto). Описать случаи, когда использование оператора goto
является дурным тоном и когда оно необходимо.
- Операторы условия и выбора
(if, switch). Объяснить принцип реализации оператора switch на уровне
машинных команд.
- Операторы цикла (for, while, do-while). Оператор
запятая.
- Операция ? : . Рекурсивное
использование данного оператора.
- Опишите ситуацию, в которой
sizeof(x) возвращает значение, отличное от 10, в случае если x описывается
как char x[10].
- Основные скалярные типы
(различные целые, вещественные). Формат представления констант (различных
целых, различных вещественных, символьных, строковых).
- Очередь. Различные
реализации. Описания типов для различных реализаций. Реализация одной из
функций очереди.
- Почему при выполнении
функции printf(“1”) на экране может ничего не появиться. Как исправить эту
ситуацию?
- Представление целых и
вещественных чисел в ЭВМ. IEEE-стандарт представления вещественных чисел.
Объяснить логику компилятора, не позволяющего сравнивать на равенство
вещественные числа.
- Работа с бинарными
файлами. В том числе, использование функций fseek()/ftell()
- Работа с текстовыми
файлами. Правила использования функции fgets(). Считывание строк
неограниченной длины с помощью функции fgets().
- Реализация списков с
самостоятельным выделением памяти. Описание типов, необходимых для
реализации (два типа). Определение одной из функций списка.
- Стандартная библиотека
ввода-вывода: семейство функций printf(). Основные спецификации формата.
Объяснить путаницу в gcc с форматами %f и %lf
- Стандартная библиотека
ввода-вывода: семейство функций scanf().Основные спецификации формата (в
том числе форматы %n и [] с примерами использования).
- Стек. Различные
реализации. Описания типов для различных реализаций. Реализация одной из
функции стека.
- Строки в языке С, принципы
организации, основные функции (strlen, strcat, strcpy, strdup,strcmp,
strstr, strchr)
- Указатели и массивы.
Использование. Указать что общего, что различного и в каких случаях их
использование дает различный результат.
- Функции и прототипы,
оператор return. Объяснить логику компилятора, не позволяющего без
описания определять функции перед использованием.
- Циклические списки.
Описание типов, необходимых для реализации (два типа). Определение одной
из функций списка.
- Чем отличается
предназначение конструкции if-else от конструкции #if-#else-#endif?
- Чем отличается функция
printf от функции fprintf.
- Чем является "а"
в выражении double *a;?
- Что может являться
прототипом функции func?: а) func(x); б) void func(double); в) double
func(double x); г) int
fun(double x);
- Что появится на экране при
выполнении функции printf(“%d\n”,~-2);