Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

test_st(новый) / test_tabl

.doc
Скачиваний:
16
Добавлен:
03.03.2016
Размер:
44.03 Кб
Скачать

1.Объявите t как 10-елементный массив указателей на функцию с пустым списком параметров, возвращающую long.

2.Какое значение будет присвоено переменной x?

int a = 2;

int b = 3;

int x = sizeof("abc") + (a&b);

3.Функция f определение как:

void f(int *x)

{

*x = *x > 0 ? 1 : -1;

}

Какое значение будет присвоено переменной y?

int a = -2;

int b = 4;

f(&a);

f(&b);

int y = a+b;

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

int arr[5];

int *p = arr;

while (p < arr+5)

*p++ = 1;

int x = 0;

for (p = arr; p < arr+5; p++)

x += *p;

5.Что будет на выходе следующей программы:

int a = 2;

int b = 3;

printf("%d%d%s%d",a,++b,"2",a/3);

6.Функции f и g определены следующим образом:

int f()

{

return 2;

}

int g()

{

return 6;

}

Какое значение будет присвоено переменной x?

typedef int (*FPTR)();

FPTR p = NULL; int x;

if (p)

p = &f;

else

p = &g;

x = (*p)();

7.Функция f определена следующим образом:

void f(int *p)

{

static int i = 0;

i += 3;

*p = i;

}

Чему будет равно значение переменной x после выполнения следующих инструкций:

int x;

f(&x);

f(&x);

8.Следующая функция была написана для того, чтобы удалить список, на который указывает переменная head. Здесь все правильно?

#include <stdlib.h>

struct list { struct list *next; } *head = NULL;

void freeup()

{

struct list *p;

for (p = head; p; p = p->next)

free(p);

}

9.Корректно ли нижеследующее присваивание в Cи? Если нет объясните почему. Иначе напишите фрагмент программы, где это присваивание корректно используется.

a[-3] = -5;

10.Что будет на выходе программы

#include <stdio.h>

char *days[] =

{

"Mon"

"Tue"

"Wed"

"Thu"

"Fri"

"Sat"

"Sun"

};

int size = sizeof(days)/sizeof(char *);

void main()

{

int k;

for (k = 0; k < size; k++)

{

printf("%d-%s",k+1, days[k]);

}

}

11. Программы первая и/или вторая работоспособны? Если нет, поясните. Если программа первая и/или вторая работоспособны, то опишите ограничения в использовании каждой из программ, если такие имеются.

#include <stdio.h>

#define MAX 10

char buff [MAX];

/* Первая */

void main()

{

fgets(buff, MAX, stdin); // (*)

printf ("%s",buff);

}

/* Вторая */

void main()

{

gets(buff); // (**)

printf ("%s",buff);

}

12.Какие из операторов a), b), c), d), e) неправильные и почему?

void main(void)

{

int *px, *pxx;

{

static int x;

int xx;

px = &x; //a)

pxx = &xx;//b)

}

{

static double x;

*px = 6; //c)

*pxx = 7; //d)

px = &x; // e)

}

}

13.Определить значение переменной res в следующей программе. Если в программе есть ошибка в описании переменных, которую обнаружит компилятор С, то исправьте ее.

void main()

{

struct {struct{int a;}*b}a;

a.b->a=5;

int res = a.b->a == 5;

}

14.Корректна ли нижеследующая программа? Если нет – объясните почему?

struct tag_SomeStruct

{

int x;

double y;

}

main()

{

struct tag_SomeStruct x, y;

/* .... */

return x = y.x;

}

2

Соседние файлы в папке test_st(новый)