Тест по С Ф.И.О. ___________________________ отправить на 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