Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тест семестр.doc
Скачиваний:
74
Добавлен:
21.03.2016
Размер:
84.99 Кб
Скачать

Вариант 1

Тест для проверки знаний «Элементы программирования на языке «Си»

  1. Как Вы понимаете термин «синтаксически ориентированная трансляция»?

  2. В числе отличительных особенностей понятия типа К.Хоор называл следующую: «каждое значение принадлежит одному и только одному типу». Проиллюстрируйте это положение на примере какого-нибудь стандартного типа данных языка «Си».

  3. Для чего в программе на языке «Си» может быть использован литерал '\0'?

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

short i=-l;

unsignedintj=2;

j+i

  1. Для предложенного массива напишите фрагмент программы, обеспечивающий печать в поток stdout значений элементов этого массива, начиная с новой строки по 5 элементов в каждой строке при том, что каждое выводимое данное должно занимать количество позиций, определяемое значением переменной i. Используете цикл do...while.

inta[24];

inti;

  1. Что будет напечатано в потоке stdout в результате исполнения приводимого здесь фрагмента программы?

int i=3;

int j = 100, k = 7;

unsigned int m = 11;

char s[10] = "пример", ch = 'a';

float r = 1.5e2;

fprintf( stdout, "%-2d %#X %6.2s", j, m, s );

  1. При каких значениях переменной k приведенный ниже цикл будет выполняться бесконечно?

intk;

while(к++ < 5);

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

inti= 2,j= 1;

j+= (i++);

  1. Определите функцию языка «Си», которая «переворачивает» задаваемую ей в качестве параметра строку, например строка, имеющая значение "пример" после окончания работы функции должна иметь значение "ремирп". Функции для работы со строками из стандартной библиотеки использовать не разрешается. Напишите прототип спроектированной функции и пример обращения к ней.

  2. Что будет напечатано в потоке stdout в результате исполнения приводимого здесь фрагмента программы?

int reset ( int );

int i = 5;

void main(void)

{

int i = 5;

reset (i / 2);

fprintf( stdout, “%d\n”, i);

reset ( i = i / 2);

fprintf( stdout, “%d\n”, i);

}

int reset (int i)

{

if(i <= 2) i = 0;

returni;

}

  1. Что будет напечатано в потоке stdout в результате исполнения приводимого здесь фрагмента программы?

int а[ ] = { 4, 3, 2 };

int *p[3];

int **pp;

for (int i = 0; i <= 3; i++ ) p[ i ] = a + i;

pp = p;

fprintf( stdout, "%d\n", **pp++);

fprintf{ stdout, "%d\n", (**pp)++);

(**pp)--;

fprintf( stdout, "%d\n", **pp );

  1. Напишите фрагмент программы добавления нового элемента в конец списка, если список формируется из элементов, имеющих тип LIST_ITEM, а на начало списка указывает переменная Start. Остальные необходимые переменные определите самостоятельно.

typedef struct _LIST_ITEM

{

int data;

struct _LIST_ITEM *next;

} LIST_ITEM;

LISTITEM*Start;

Вариант 2

Тест для проверки знаний «Элементы программирования на языке «Си»

  1. Для чего нужны метасинтаксические языки? Приведите пример такого языка.

  2. В числе отличительных особенностей понятия типа К.Хоор называл следующую: «каждой операции соответствует некоторый фиксированный тип ее операндов и некоторый фиксированный (обычно такой же) тип результата». Проиллюстрируйте это положение на примере операции сложения. Как разрешается семантическая неопределённость, когда один и тот же символ операции применяется к операндам разного типа?

  3. Для чего в программе на языке «Си» может быть использован литерал '\n'?

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

inti=7;

(float)i/ 2;

  1. Для предложенного массива напишите фрагмент программы, обеспечивающий печать в поток stdout значений элементов этого массива, начиная с новой строки по 5 элементов в каждой строке при том, что каждое выводимое данное должно занимать 10 позиций при точности 5 знаков после десятичной точки. Используете цикл for.

floata[24];

  1. Что будет напечатано в потоке stdout в результате исполнения приводимого здесь фрагмента программы?

int i = 3;

int j - 100, k = 7;

unsigned int m = 11;

char s[ 10 ] = "пример", ch = a’;

float r = 1.5e2;

fprintf (stdout, "%+*2d %u %-10c", i, j, m, ch);

  1. При каких значениях переменной k приведенный ниже цикл будет выполняться бесконечно?

intk;

for( ;к > 10; к++);

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

int i = 2,j = 1;

j +=++i /i;

  1. Определите функцию языка «Си», которая «переворачивает» задаваемую ей в качестве параметра строку, например строка, имеющая значение "пример" после окончания работы функции должна иметь значение "ремирп". Функции для работы со строками из стандартной библиотеки использовать не разрешается. Напишите прототип спроектированной функции и пример обращения к ней.

  2. Что будет напечатано в потоке stdout в результате исполнения приводимого здесь фрагмента программы?

int reset ( int );

int i = 5;

void main(void)

{

int i = 5;

reset (i / 2);

fprintf( stdout, “%d\n”, i);

reset ( i = i / 2);

fprintf( stdout, “%d\n”, i);

}

int reset (int i)

{

if(i <= 2) i = 0;

returni;

}

  1. Что будет напечатано в потоке stdout в результате исполнения приводимого здесь фрагмента программы?

int а[ ] = { 4, 3, 2 };

int *p[3];

int **pp;

for (int i = 0; i <= 3; i++ ) p[ i ] = a + i;

pp = p;

fprintf( stdout, "%d\n", **pp++);

fprintf{ stdout, "%d\n", (**pp)++);

(**pp)--;

fprintf( stdout, "%d\n", **pp );

  1. Напишите фрагмент программы добавления нового элемента в конец списка, если список формируется из элементов, имеющих тип LIST_ITEM, а на начало списка указывает переменная Start. Остальные необходимые переменные определите самостоятельно.

typedef struct _LIST_ITEM

{

int data;

struct _LIST_ITEM *next;

} LIST_ITEM;

LIST ITEM *Start;

Вариант 3