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

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

  1. В чём состоит назначение редактора связей?

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

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

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

#include <math.h>

float a;

0.5 * sin(a)

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

floata[100];

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

int i = 3;

int j = 100, k = 7;

unsigned int m = 15;

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

float r = 1.5e-4;

fprintf( stdout, "%*.*f %5s %-5u", k, i, r, s, m );

  1. Для заданного цикла for напишите эквивалентный ему цикл do...while.

int k, t;

for (int k = 100; k >= -100; k--) { if(k==0) break; }

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

inti= 5,k= 2;

i/= (k++);

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

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

int f(int);

int g(void);

int I = 0;

void main(void)

{

int i = 2;

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

i = f (i);

fprintf (stdout, "%d\n", i);

g( );

}

int f (int i)

{

fprintf( stdout, "%d\n", i);

i = g( );

return i;

}

int g (void)

{

static int i = 5;

fprintf( stdout, "%d\n", i);

returni++;

}

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

int а[3][3] = { { 1, 2, 3},

{ 4, 5, 6},

{ 7, 8, 9} };

int *ра [3];

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

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

{

fprintf( stdout, "%d %d\n", *pa[i], a[1][i]);

}

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

typedefstruct_LIST_ITEM

{

int data;

struct _LIST_ITEM *next;

} LIST_ITEM;

LIST-ITEM*Start;

Вариант 4

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

  1. В чём состоят основные задачи, решаемые в процессе трансляции?

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

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

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

#include <math.h>

double a = 2.0;

(float)a*sin(a)

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

floata[55];

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

int i = 3;

int j = 100, k = 7;

unsigned int m = 15;

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

floatr = 1.5e-4;

fprintf (stdout, "%lu %-*s %15e", m, k, s, r);

  1. Когда прекратится выполнение приведенного цикла?

int k, t;

for (int k = 10; k >= -10; k++) { if (k==0) break; }

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

inti= 5;

i*= (i++);

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

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

int f(int);

int g(void);

int i = 2,;

void main(void)

{

int i = 0;

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

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

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

}

int f (int j)

{

g( );

return i = ++j;

}

int g (void)

{

static int j = 5;

returnj+= (i++);

}

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

intа[3][3] = { { 1, 2, 3},

{ 4, 5, 6},

{ 7, 8, 9} };

int*ра [3];

ра[0] = а[2]; ра[1] = а[0]; ра[2] = а[1];

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

{

fprintf (stdout, "%d %d\n", *pa[i] , a[i][i]);

}

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

typedefstructLIST-ITEM

{

intdata;

struct LIST-ITEM *next;

} LIST-ITEM;

LIST-ITEM *Start;

Вариант 5