Тест по С/С++

advertisement
Тест по С
Ф.И.О. ___________________________ отправить на a.s.tsvetkov@inbox.ru
1. Какой оператор не существует в препроцессоре С?
1. #else
2. #elseif
3. #elif
4. #endif
2. Какой спецификатор формата в операторе printf не должен использоваться для вывода
вещественного значения?
1. f
2. e
3. g
4. x
3. Вычислите значение выражения, записанного на С: 010/2%3
1. 0
2. 1
3. 2
4. 3
4. Что выведет следующий фрагмент программы?
char * s="ABCDEFGH", *p, *q;
p=&s[1]; q=&s[2];
if (p>q) printf("A"); else if (p==q) printf("B");
else printf("C");
1. A
2. B
4. Ничего не выведет
3. C
5. Что выведет следующая программа?
int z(int x){ if (x==0) return 0; else return x+z(x-1);}
void main() { printf("%d\n",z(10)); }
1. 0
2. 10
3. 19
4. 55
6. Следующая программа должна создавать динамический стек. Вершина стека есть
глобальная переменная a, функция f помещает в стек значение. Надо написать
процедуру снятия с вершины стека значения. Есть четыре варианта, какой верный?
struct sp { int x; sp *s; };
typedef sp* psp;
void f(int z)
{ psp y;
y=new(sp);
y->x=z; y->s=a;
a=y;
}
psp a = NULL;
1.
2.
3.
4.
int g()
{
int z;
z=a->x;
delete a;
return z;
}
int g()
int g()
{
int z;
psp y;
z=a->x; y=a->s;
a=y;
return z;
}
int g()
{ int z;
psp y;
z=a->x; y=a->s;
delete a;
a=y;
return z;
}
{
return a->z;
}
7. Функция sort должна сортировать массив по возрастанию элементов, однако в ней
содержится ошибка. Что на самом деле выведет программа?
void sort(int n, int *a)
{int i,j;
int t;
for (i=0; i<n; i++)
for (j=1; j<n; j++)
if (a[j]<a[i])
{ t=a[i]; a[i]=a[j]; a[j]=t; }
}
1. 4321
2. 1324
void main()
{ int x[] = {4,3,2,1};
sort(4,x);
for (int i=0; i<4; i++ )
cout << x[i];
}
3. 1432
4. 2134
8. Возникло подозрение, что ошибка в функции sort кроется во втором операторе for. Как
его надо исправить?
1. for (j=i; j<n–1; j++)
2. for (j=1; j<i; j++)
3. for (j=i+1; j<n; j++)
4. for (j=0; j<n; j++)
9. Что выведет следующая программа?
int a = 0;
void main()
{
f(); f();
}
void f()
{ extern
a;
static
b = 0;
auto
c = 0;
register d = 0;
++d=++c=++b=++a;
printf(“%d %d %d %d\n”,a,b,c,d);
}
1.
1 1 1 1
2 1 1 1
2.
1 1 1 1
2 2 1 1
3.
1 1 1 1
2 2 2 1
4.
1 1 1 1
2 2 2 2
10. Что выведет следующая программа при стандартных настройках компилятора?
int a=0;
int b=0;
inline A() { return a++; }
inline B() { return b++; }
1. 0 0
2. 0 1
void main()
{
if ( A()==0 || B()==0 )
printf ("%d %d\n",a,b);
}
3. 1 0
4. 1 1
11. Следующая программа должна создавать массив строк переменной длины. Какой
оператор должен быть вставлен вместо точек для выделения памяти под строку.
class vect
{
protected:
double x,y,z;
public:
vect(double u=0, double v=0, double w=0) { x=u; y=v; z=w; }
double norm();
};
#define N 100
void main()
{ char **t;
char s[255];
t=(char**) malloc(sizeof(char*)*N);
for (int i=0; i<N; i++)
{
gets(s);
if (*s=='\0') break;
. . . . . . . . . . .
strcpy(t[i],s);
}
}
1. t[i]=(char *) malloc(strlen(s));
3. *t[i]=(char *) malloc(strlen(s));
double vect::norm () { return x*x+y*y+z*z;}
2. t[i]=(char *) malloc(sizeof(s));
4. *t[i]=(char *) malloc(sizeof(*s));
template <class T>
T sqr ( T x )
{
return x*x ;
}
3.
Ошибка в
определении шаблона
4.
Ошибка. Тип T не
определен.
class A {
public:
A () { m (); }
virtual void m() { printf("A"); };
void c() { m (); };
};
class B: public A
{ public:
B () { c (); }
void m() { printf("B"); };
};
13. Что выведет данная программа?
class A
{ public: A() { printf("A"); }
};
class B
{ public: B() { printf("B"); }
};
main()
{ B b;
}
class C : public A, protected B
{ public: C() { printf("C"); }
};
1. A
2. B
1
2. CBA
3. CAB
3. BB
4. AB
Ф.И.О. ___________________________________________________
main()
{ C c;
}
1. ABC
2. Недопустимый оператор u=&v, нельзя присваивать адрес объекта
4. Метод norm не будет иметь доступ к секции protected
15. Что выведет данная программа?
void main() { printf("%d",sqr(2)); }
2.
Ошибка. Аргумент не
есть класс.
main()
{ vect v(1,2,3),*u;
u=&v;
printf("%2.0f", u->norm());
}
1. 0
3. 14
12. Проанализируйте программу?
1.
Программа выведет
число 4
14. Что выведет данная программа или она содержит ошибку?
4. BAC
2
3
4
5
6
7
8
Заполните таблицу, на основании ваших ответов
9
10
11
12
13
14
15
Download