Главная / Программирование /
Структуры и алгоритмы компьютерной обработки данных / Тест 6
Структуры и алгоритмы компьютерной обработки данных - тест 6
Упражнение 1:
Номер 1
Укажите объявление указателя-константы на вещественную переменную.
Ответ:
 (1) const float ci=1;
 
 (2) const float *pci;
 
 (3) float *const cpi;
 
 (4) const float *const cpc;
 
Номер 2
Укажите объявление указателя-константы на вещественную константу.
Ответ:
 (1) const float ci=1;
 
 (2) const float *pci;
 
 (3) float *const cpi;
 
 (4) const float *const cpc;
 
Номер 3
Укажите объявление указателя на вещественную константу.
Ответ:
 (1) const float ci=1;
 
 (2) const float *pci;
 
 (3) float *const cpi;
 
 (4) const float *const cpc;
 
Упражнение 2:
Номер 1
Укажите, что запрещено выполнять над указателем, который объявлен const int *const pa
.
Ответ:
 (1) изменять значения указателя 
 (2) изменять значение, на которое указывает указатель 
 (3) инициализировать указатель 
 (4) разыменовывать указатель 
Номер 2
Укажите, что разрешено выполнять над указателем, который объявлен int const *pa
.
Ответ:
 (1) изменять значения указателя 
 (2) изменять значение, на которое указывает указатель 
 (3) инициализировать указатель 
 (4) разыменовывать указатель 
Номер 3
Укажите, что запрещено выполнять над указателем, который объявлен const int *pa
.
Ответ:
 (1) изменять значения указателя 
 (2) изменять значение, на которое указывает указатель 
 (3) инициализировать указатель 
 (4) разыменовывать указатель 
Упражнение 3:
Номер 1
В какой строке будут выведены одинаковые результаты, если ранее выполнены следующие инициализации:
int a=3,*pa,*pb;
pa=&a;
pb=pa;
Ответ:
 (1) printf ("\n%p %p ",pa, pb);
 
 (2) printf ("\n%p %p ",&pb, &a);
 
 (3) printf ("\n%d %d ",*pa, *pb);
 
 (4) printf ("\n%d %d ",pb, a);
 
Номер 2
В каких строках будут выведены одинаковые результаты, если ранее выполнены следующие инициализации:
int a=3,*pa,*pb;
pa=&a;
pb=pa;
Ответ:
 (1) printf ("\n%d %d ",*pa, a);
 
 (2) printf ("\n%d %d ",pa, a);
 
 (3) printf ("\n%p %p ",&pa, &pb);
 
 (4) printf ("\n%d %d ",*pb, a);
 
Номер 3
В каких строках будут выведены одинаковые результаты, если ранее выполнены следующие инициализации:
int a=3,*pa,*pb;
pa=&a;
pb=pa;
Ответ:
 (1) printf ("\n%p %p ",pa, &a);
 
 (2) printf ("\n%p %p ",&pa, &a);
 
 (3) printf ("\n%d %d ",*pa, *pb);
 
 (4) printf ("\n%p %p ",pb, &a);
 
Упражнение 4:
Номер 1
Укажите результат выполнения операции pa++
, если выполнено объявление int *pa;
и инициализация указателя адресом 0012FF48.
Ответ:
 (1) 0012FF48 
 (2) 0012FF49 
 (3) 0012FF52 
 (4) данная операция над указателями не определена 
Номер 2
Укажите результат выполнения операции pb+pa
, если выполнено объявление int *pa,*pb;
и инициализация указателей адресами 0012FF48 и 0012FF64 соответственно.
Ответ:
 (1) 0025FEAC 
 (2) 16 
 (3) 4 
 (4) данная операция над указателями не определена 
Номер 3
Укажите результат выполнения операции pa--
, если выполнено объявление float *pa;
и инициализация указателя адресом 0012FF54.
Ответ:
 (1) 0012FF50 
 (2) 0012FF53 
 (3) 0012FF54 
 (4) данная операция над указателями не определена 
Упражнение 5:
Номер 1
Укажите операции, разрешенные над указателями:
Ответ:
 (1) умножение 
 (2) деление 
 (3) взятие адреса 
 (4) присваивание 
Номер 2
Укажите операции, запрещенные над указателями:
Ответ:
 (1) разыменование 
 (2) сравнение 
 (3) приведение типов 
 (4) сложение с вещественным числом 
Номер 3
Укажите операции, разрешенные над указателями:
Ответ:
 (1) сложение указателей 
 (2) вычитание указателей 
 (3) инкремент 
 (4) декремент 
Упражнение 6:
Номер 1
Что является результатом выполнения фрагмента кода: int *(*f)(char);
?
Ответ:
 (1) объявление указателя на функцию f
типа int
 
 (2) объявление функции c именем f
типа указатель на int
 
 (3) объявление функции с именем f
типа int
 
 (4) объявление указателя на функцию f
типа указатель на int
 
Номер 2
Что является результатом выполнения фрагмента кода: int *f(char);?
Ответ:
 (1) объявление указателя на функцию f
типа int
 
 (2) объявление функции c именем f
типа указатель на int
 
 (3) объявление функции с именем f
типа int
 
 (4) объявление указателя на функцию f
типа указатель на int
 
Номер 3
Что является результатом выполнения фрагмента кода: int (*f)(char);
?
Ответ:
 (1) объявление указателя на функцию f
типа int
 
 (2) объявление функции c именем f
типа указатель на int
 
 (3) объявление функции с именем f
типа int
 
 (4) объявление указателя на функцию f
типа указатель на int
 
Упражнение 7:
Номер 1
Каким образом компилятором происходит контроль конца списка параметров во фрагменте кода:
float sum(int k, ...) {
int *p=&k;
float s=0;
for(;k!=0;k--)
s+=*(++p);
return s;
}
Ответ:
 (1) известен признак конца списка параметров 
 (2) известно количество параметров в списке 
 (3) контроль конца списка параметров данной функции проводить не надо 
 (4) количество параметров у функций при компиляции должно быть фиксировано 
Номер 2
Каким образом компилятором происходит контроль конца списка параметров во фрагменте кода:
double rec(double(*pf)(double), double a, double b){
int N, i;
double h,s=0.0;
printf("\nВведите количество интервалов разбиения: N= ");
scanf("%d",&N);
printf("\na= ");
h=(b-a)/N;
for (i=0;i<N;i++)
s+=pf(a+h/2+i*h);
return h*s;
}
Ответ:
 (1) известен признак конца списка параметров 
 (2) известно количество параметров в списке 
 (3) у данной функции фиксированное число параметров, контроль не нужен 
 (4) количество параметров функций вводится с клавиатуры 
Номер 3
Каким образом компилятором происходит контроль конца списка параметров во фрагменте кода:
float arifm(int k, ...) {
int *p=&k;//настроили указатель на параметр k
float s=*p; //значение первого параметра присвоили s
int i;
for(i=1;(*p)!=0;i++) //пока нет конца списка
s+=*(++p);
return s/(i-1);
}
Ответ:
 (1) известен признак конца списка параметров 
 (2) известно количество параметров в списке 
 (3) контроль конца списка параметров данной функции проводить не надо 
 (4) количество параметров у функций при компиляции должно быть фиксировано 
Упражнение 8:
Номер 1
Какой объект объявлен следующим образом: float **nb;
?
Ответ:
 (1) указатель на функцию вещественного типа 
 (2) переменная вещественного типа 
 (3) указатель на вещественное число 
 (4) указатель на указатель на вещественное число 
Номер 2
Как получить доступ к значению переменой x
, если выполнены объявления и инициализации:
int *p, x, **q;
x = 10;
p = &x;
q = &p;
Ответ:
 (1) printf("%d", **q); 
 (2) printf("%d", *q); 
 (3) printf("%d", q); 
 (4) printf("%d", *p); 
Номер 3
Даны следующие объявления и инициализации:
int x, *p, **q, ***r;
x=5;
p = &x;
q = &p;
r = &q;
Укажите истинные высказывания:
Ответ:
 (1) значением переменой r
является адрес адреса переменной p
 
 (2) значением переменой q
является число 5 
 (3) значением переменой p
является число 5 
 (4) значением переменой p
является адрес, по которому хранится число 5