fwrite(&n,sizeof(n),1,f);
2. int n=11;
f=fopen(“array.dat”,”wb”);
fseek(f,2*2,0);
fwrite(&n,2,1,f);
3. int n=11;
f=fopen(“array.dat”,”wb+”);
fseek(f,sizeof(ar[0],0);
fwrite(&n,sizeof(n),1,f);
ν 4. int n=11;
f=fopen(“array.dat”,”rb+”);
fseek(f,sizeof(ar[0])*2,0);
fwrite(&n,2,1,f);
Глава 11. Указатели.
Вопрос 11.1. В каком из фрагментов программы будет выведено *k=10; *i=14;?
Ответы:
1. int *k=new int,*i=new int;
*k=10; *i=14;
i=k;
printf(“*k=%d *i=%d”,*k,*i);
ν 2. int *k=new int,*i;
*k=10;
i=new int;*i=14;
printf(“*k=%d *i=%d”,*k,*i);
3. int *k=new int,*i=new int;
*k=10; i=k;
*i=14;
printf(“*k=%d *i=%d”,*k,*i);
4. int *k=new int,*i=new int;
k=10; i=14;
printf(“*k=%d *i=%d”,k,i);
Вопрос 11.2. В каком из фрагментов программы операции присваивания не являются допустимыми?
Ответы:
1. int a,b,*pa=NULL,*pb=new int;
a=25; *pb=30;
pa=&a; b=*pb;
printf(“*pa=%d b=%d”,*pa,b);
2. int a,b,*pa,*pb;
float c,*pc;
pa=NULL; b=30;
pb=&b; c=(float)b; pc=&c;
printf(“*pb=%d *pc=%d”,*pb,*pc);
3. int b,*pb=NULL;
float c,*pc=new float;
*pc=25.5;
b=(int)*pc; pb=&b;
printf(“*pb=%d *pc=%d”,*pb,*pc);
ν 4. int b,*pb=NULL;
float c,*pc=new float;
*pc=25.5;
*pb=30;
printf(“*pb=%d *pc=%d”,*pb,*pc);
Вопрос 11.3. Пусть дан массив int a[6]; Какой из способов доступа к 3-му элементу не является правильным?
Ответы:
1. int x, a[6]={1,2,3,4,5,6};
x=*(&a[0]+2);
printf(“x=%d”,x);
2. int x, a[6]={1,2,3,4,5,6};
x=*(a+2);
printf(“x=%d”,x);
3. int x,*p, a[6]={1,2,3,4,5,6};
p=a+2;
printf(“x=%d”,*p);
ν 4. int x,*p, a[6]={1,2,3,4,5,6};
*p=*(a+2);
printf(“x=%d”,*p);
Глава 12. Динамические массивы.
Вопрос 12.1. В каком из фрагментов корректно выделяется и освобождается память под динамический массив?
Ответы:
1. int i,*p,n=10;
p=(int *)malloc(n*sizeof(n));
for (i=0;i<n;i++)
{ p[i]=random(100);
printf(“%4d”,p[i]);
}
delete p;
2. int i,*p,n=10;
for (i=0;i<n;i++)
{ if (!(p=new int)) exit (1);
p[i]=random(100);
printf(“%4d”,p[i]);
}
delete p;
ν 3. int i,*p,n=10;
if (!(p=new int[n])) exit (1);
for (i=0;i<n;i++)
{ *(p+i)=random(100);
printf(“%4d”,p[i]);
}
delete [n]p; p=NULL;
4. int i,*p,n=10;
for (i=0;i<n;i++)
{ p=new int;
*(p+i)=random(100);
printf(“%4d”,p[i]);
}
delete p;
Вопрос 12.2. Пусть создан двумерный динамический массив a[3][3]. Как можно обратиться к элементу a[2][3]?
Ответы:
1. x=*(*(a+3)+2);
ν 2. x=*(*(a+2)+3);
3. x=*((&a[0]+2)+3);
4. x=*(*(a[0]+3)+2);
Вопрос 12.3. Какой из фрагментов правильно выделяет память под массив из 100 указателей?
Ответы:
1. int **p, n=100;
p=new *int[n];
2. int *p, n=100;
p=(int *)malloc(sizeof(int)*n);
ν 3. int **p, n=100;
p=new int *[n];
4. 2. int **p, n=100;
p=(int *)calloc(sizeof(int*),n);
Глава 13. Динамические структуры данных.
Вопрос 13.1. Пусть объявлена структура spis с полем char data[40] и полем
spis *next. Как создать 1-й элемент односвязного списка?
Ответы:
ν 1. spis *p,*head;
p=new spis; gets(p->data);
p->next=NULL; head=p;
2. spis *p,*head,*pred;
p=(spis *)malloc(sizeof(spis));
scanf(“%s”,p->data);
pred->next=p; head=p;
Вопрос 13.2. Пусть создан односвязный список структур, на начало которого указывает struct spis *head. Как удалить 1-й элемент из списка?
Ответы:
ν 1. spis *p;
p=head->next;
delete head; head=p;
2. spis *p,*temp;
temp=head; delete temp;
p=head->next; head=p;
Вопрос 13.3. Как добавить элемент в конец двусвязного списка, если известен указатель на начало head и на конец tail?
Ответы:
1. spis *p;
p=(spis *)malloc(sizeof(spis));
gets(p->data); tail=p;
p->next=NULL; p->prev=tail;
tail->next=p;
ν 2. spis *p;
p=new spis;
gets(p->data);
p->prev=tail; tail->next=p;
p->next=NULL; tail=p;
Вопрос 13.4. Как удалить предпоследнюю структуру из двусвязного списка, если известен указатель на начало head и на конец tail?
Ответы:
ν 1. spis *p;
p=tail->prev; p->prev->next=tail;
tail->prev=tail->prev->prev;
delete p;
2. spis *p;
tail->prev=tail->prev->prev;
tail->prev->prev->next=tail;
p=tail->prev; delete p;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.