МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Проверка остаточных знаний по ППР





1. Выберете правильно записанные константы, представляющие целочисленные значения.

 

a) 123 b) 1E6 c) 0xffffffL d) -‘x’ e) ‘\122’   f) 0731UL g) 058 h) ‘\122’ i) 0731UL j) 058  

 

2. Верно ли записаны выражения?

int i, j, k, m; char c, d; i = 1; j = 2; k = -7; m = 0; c = ‘w’

 

a) d = ’a’+1 < c b) m = - i - 5 * j >= k+1 c) i + j++ + k = = -2*j   d) m = c = ! 87 e) m = c != 87 f) k %= m = 1 + n / 2  

 

3. Верно ли решена задача: «значение целочисленной переменной с увеличить на 1; целочисленной переменной а присвоить значение, равное удвоенному значению переменной с ».

 

int a, c; c = 5;

 

a). c ++ ; a = 2 * c;

b). a = 2 * c++ ;

c). c += 1; a = c + c;

d). a = c++ + c;

e). ++c; a = c + c;

f). a = ++ c + c;

g). a = c += 1 + c;

h). a = (c+=1)+c;

 

4. Что будет напечатано в результате работы следующего фрагмента программы?

double d; float f; long lng; int i;

i = lng = f = d = 1000000/3;

printf("i = %d lng = %ld f = %f d = %f\n", i, lng, f, d);

 

a) i=000000 lng=333333 f=333333.000000 d=333333

b) i=333333 lng=333333 f=333333.000000 d=333333.000000

c) i=333333 lng=333333 f=333333 d=333333.000000

d) i=333333 lng=333333.000000 f=333333.000000 d=333333.000000

 

5. Что будет напечатано в результате выполнения следующего фрагмента программы?

double d = 3.2, x; int i = 2, y;

y = d*( x = 2.5 / d); printf ("x = %f; y = %d\n", x, y);

 

a) x=0 y=0

b) x=0.781250 y=1

c) x=1 y=1

d) x=0.781250 y=0

e) x=0.781250 y=2

 

6. Верны ли следующие утверждения:

 

a) «любое выражение в Си может быть преобразовано в оператор добавлением к нему точки с запятой ( ; ) »

b) «пустой оператор в Си - это отсутствие каких-либо символов в том месте конструкции, где по синтаксису может находиться оператор»

c) «составной оператор ( блок ) в Си - это совокупность операторов, заключенная в фигурные скобки { }»

d) «оператор присваивания в Си - это выражение вида

переменная = выражение»

e) «тип выражения в условии в операторе if , в условии завершения цикла в операторах цикла может быть скалярным (т.е. любым целочисленным, любым вещественным либо указателем )»

f) «в блоке описания/объявления и операторы могут располагаться в любом порядке; единственное требование - использование не должно предшествовать описанию/объявлению»

 

7. Эквивалентны ли следующие фрагменты программы:

a) if (e1) if (e2) S1; else S2;

b) if (e1) { if (e2) S1; else S2; }

c) if (e1) { if (e2) S1; } else S2;

d) if (e1) if (e2) S1; else ; else S2;

e) if (e1) if (e2) S1; else S2; else ;

Замечание: здесь e1 и e2 - выражения допустимого в этом случае типа; S1 и S2 - произвольные операторы.

8. Верно ли утверждение: « действие оператора continue; в приведенных ниже примерах эквивалентно действию оператора go to next; ».

a) switch ( E ) { case C1: S;

case C2: S; continue;

case C3: S; }

next:; ...

b) switch ( E ) { case C1: S;

case C2: S; continue;

case C3: next: S; }

c) next: switch ( E ) { case C1: S;

case C2: S; continue;

case C3: S; }

Замечание: здесь E, E1, E2, E3 - выражения допустимого в этом случае типа ; S - произвольный оператор; C1, C2 C3 - константы подходящего типа.

 

9. Верны ли следующие утверждения:

a) «цикл for ( ; ; ) является бесконечным циклом, и поэтому его использование в Си запрещено»

b) «семантика операторов цикла while и do-while в Си различается только тем, что тело цикла while может не выполниться ни разу, а тело цикла do-while выполнится хотя бы один раз.»

c) «каждая ветвь в операторе switch должна быть помечена одной или несколькими различными целочисленными константами или константными выражениями»

d) «если в операторе switch нет ветви default, то значение выражения выбора должно совпадать с одной из констант ветвей case»



e) «в операторе switch ветви case и ветвь default можно располагать в любом порядке»

 

10. Верно ли решена задача: «найти сумму первых 100 натуральных чисел»?

a) i = 1; sum = 0;

for ( ; i <= 100; i++) sum += i;

b) sum = 0;

for ( i = 1; i <= 100;) sum += i++;

c) for ( i = 1, sum = 0; i <= 100; sum += i+, i++);

d) for ( i = 1, sum = 0; i <= 100; sum += i++);

e) for ( i = 0, sum = 0; i++, i <= 100; sum += i);

 

11. Верно ли утверждение: « действие оператора break; в приведенных ниже примерах эквивалентно действию оператора go to next; ».

a) while ( E ) { S; ... break; ... S; next: ; }

b) while ( E ) { S; ... break; ... S; } next: ; ...

c) do { S; ... break; ... S; } while ( E ); next: ; ...

d) for ( E1; E2; E3) { S; ... break; ... S; next: ; }

e) while ( E) { S; ... for ( E1; E2; E3) { S; ... break; ... S; } next: ; ... S; }

f) while ( E ) { S; ... for ( E1; E2; E3) { S; ... break; ... S; } ... S; next: ; }

g) while ( E) { S; ... for ( E1; E2; E3) { S; ... break; ... S; } ... S; } next: ;

 

12. Что напечатает следующая программа?

# include <stdio.h>

main()

{ int x, y;

x = y = 0;

while ( y < 10 ) ++y; x += y;

printf ("x = %d y = %d\n", x, y);}

 

a) x=9 y=10

b) x=10 y=9

c) x=10 y=10

d) x=11 y=10

13. Эквивалентны ли следующие объявления функций:

a) double f ( ); и double f (void);

b) char g ( int i, char c); и char g ( int, char);

c) h ( double x); и int h ( double x);

d) void h ( int ); и h ( int );

e) extern int q ( int ); и int q ( int);

f) static void s ( char c); и void s ( char c);

 

14. Определить, какие конструкции являются определениями, а какие описаниями

a) int i;

b) char c = ‘a’;

c) extern int f ( int, char );

d) static int j;

e) register int b;

f) double g( ) { return 3.141592; };

g) extern long k;

h) int h ( int i );

i) static char q( int, double );

j) auto short n;

k) s();

l) static void p( int i ) { };

 

15. Определить какие из перечисленных выражений являются верными.

a) Функция getchar() считывает один символ из стандартного входного потока.

b) При успешном завершении putchar() возвращает 1, а при ошибке - 0.

c) Управляющие символы таблицы ASCII выводятся на экран функцией getche() в виде специальных обозначений.

d) Функция getch() получает символ непосредственно с клавиатуры с эхо-печатью и буферизацией.

e) Функция getchar() осуществляет буферизованный ввод символа с отображением на экране (эхо-печатью).

f) При успешном завершении функция getchar() возвращает символ, преобразованный в целочисленный тип int

 

 

16. Верны ли следующие утверждения:

a) «тип выражения в операторе return должен совпадать с типом результата функции»

b) «функция, которая не возвращает результата (тип результата void), может не содержать оператор return;»

c) «функция, которая возвращает результат, может не содержать оператор return E; но вызывает другую функцию, которая содержит такой оператор»

d) «функция, которая возвращает результат, может содержать несколько операторов return E; »

e) «в Си аргументы функции всегда передаются по значению»

f) «в теле одной функции могут находиться два разных оператора, помеченных одинаковыми метками, если эти операторы находятся в разных блоках»; например,

void f(void)

{ ... label: S1; ...

{ ... label: S2; ...goto label; ...}

...goto label;...

}

g) «в Си нельзя использовать две (или более) взаимно рекурсивных функций»; например, если есть void f(void){... g();...} и void g(void){...f();...}, то программа, использующая такие функции, будет ошибочной.

h) «в Си можно войти в блок, минуя его заголовок; при этом память под локальные переменные, описанные в этом блоке, будет отведена, но инициализация (если она есть) выполняться не будет»

i) «любая функция, описанная в каком-либо файле, входящем в состав программы, может быть использована в этом и любом другом файле этой программы»

 

17.Верны ли следующие утверждения:

a) Функция gets считывает строку из стандартного входного потока.

b) Функция puts копирует в стандартный поток stdout последовательность символов, начиная с адреса s и до конца файла.

c) При успешном завершении функция gets возвращает указатель на введенную строку.

d) При успешном завершении функция puts возвращает последний выведенный символ строки.

e) Нуль-терминатор при выводе функцией puts заменяется на символ ‘\n’

f) Признаком конца ввода для функции gets является нажатие клавиши ENTER.

g) Cимвол ‘\n’ функция gets заменяет на нуль-терминатор '\0' и записывает его в конец строки.

h) При успешном завершении функция puts возвращает 1.

 

18. Верно ли решена следующая задача: «читать символы из стандартного входного потока, пока код каждого следующего символа больше кода предыдущего; определить, сколько символов было прочитано»

a) ... i = 0;

while ( getchar() < getchar() ) i = i + 2;

b) … i = 0; c = getchar();

while ( c < ( c = getchar() ) ) i++;

c) … i = 0; c = getchar();

while ( c < ( d = getchar()) ) { i++; c = d;}

d) … i = 0; c = getchar();

while (d = getchar(), c<d)) { i++; c = d; }

e) … i = 0; c = getchar();

while ( c != EOF && ( d = getchar()) != EOF && c<d ) { i++; c=d; }

 

19. Пусть целочисленный массив a содержит 100 элементов. Верно ли решена задача: "написать фрагмент программы, выполняющий суммирование всех элементов массива a".

a) int a[100], sum, i;

sum = 0;

for ( i = 0; i < 100; ++i ) sum += a[i];

b) int a[100], *p, sum;

sum = 0;

for ( p = a; p < &a[100]; ++p ) sum = sum + *p;

c) int a[100], *p, sum;

sum = 0;

for ( p = &a[0]; p < &a[100]; p++ ) sum += *p;

d) int a[100], sum, i;

sum = 0;

for ( i = 0; i < 100; ++i ) sum += *(a+i);

e) int a[100], sum, i;

sum = 0;

for ( i = 0; i < 100; ++a, ++i ) sum += *a;

f) int a[100], *p, sum, i;

sum = 0;

for ( i = 0, p = a; i < 100; ++i ) sum += p[i];

g) int a[100], *p, sum, i;

sum = 0;

for ( i = 0, p = a; i < 100; ++i ) sum += *(p+i);

 

20. Эквивалентны ли следующие фрагменты программы на Си?

a) a[ i ] /= k+m и a[ i ] = a[ i ]/k+m

b) a[ i ] /= k+m и a[ i ] = a[ i ]/(k+m)

c) a[ i++]+=3 и a[i++] = a[ i++]+3

d) a[ i++]+=3 и a[ i ] = a[ i++]+3

e) a[ i++]+=3 и a[ i++ ] = a[ i ]+3

f) a[ i++]+=3 и a[ i ] = a[ i ]+3; i++;

 

21. Что напечатает следующая программа?

#include <stdio.h>

char str[ ] = "SSSWILTECH1\1\11W\1WALLMP1";

main()

{ int i, c;

for ( i = 2; ( c = str [ i ] ) != ‘\0’; i++) {

switch (c) {

case ‘a’: putchar(‘i’); continue;

case ‘1’: break;

case 1: while ( ( c = str [++ i ] ) != ‘\1’ && c != ‘\0’);

case 9: putchar(‘S’);

case ‘E’: case ‘L’: continue;

default: putchar(c); continue; }

putchar(‘ ’); }

putchar(‘\n’);

}

a) SSSWILTECHWWALLMP

b) SWTCH SWAMP

c) SSSWILTECH1\1\11W\1WALLMP1

d) 1\1\11\11

22. Что напечатает следующая программа?

#include <stdio.h>

int a[ ] = { 0, 1, 2, 3, 4 };

main()

{ int i, *p;

for ( p = a, i = 0; p+i <= a+4; i++ ) printf("%d ", * (p+i));

printf("\n");

for ( p = a+4, i=0; i <= 4; i++ ) printf("%d ", p[ -i ]);

printf("\n");

for ( p = a+4; p >= a; p -- ) printf("%d ", a[ p - a ]);

printf("\n"); }

  a) 0 1 2 3 4 0 1 2 3 4 4 3 2 1 0   b) 1 2 3 4 5 5 4 3 2 1 5 4 3 2 1   c) 0 1 2 3 4 4 3 2 1 0 4 3 2 1 0   d) 1 2 3 4 5 5 4 3 2 1 5 4 3 2 1   e) 0 1 2 3 4 0 1 2 3 4 4 3 2 1 0   f) 4 3 2 1 0 0 1 2 3 4 0 1 2 3 4

23. Верны ли следующие утверждения.

a) В функцию как аргумент передается весь массив.

b) Размер указателя зависит от типа объекта, на который он указывает.

c) Операция sizeof возвращает размер своего операнда в байтах.

d) В функцию передается адрес первого элемента массива.

e) В функцию передается копия массива.

f) Операции sizeof может быть применена не только к объектам, но и к типу данных.

g) Все указатели имеютодин и тот же размер.

 

24. Допустимо ли в Си ?

int i,* p, j, *q; p = &i;

a) q = &p;

b) j = *p = 1;

c) q = p-1;

d) *p += 1;

e) i = *++q + *p;

f) q -= 1;

g) i = *q ++ + *q;

25. Что напечатает следующая программа?

#include <stdio.h>

int a[ ] = { 8, 7, 6, 5, 4 };

int *p[ ] = { a, a+1, a+2, a+3, a+4 };

int **pp = p;

main() { printf("*a=%d **p=%d **pp=%d\n", *a, **p, **pp );

++*pp;

printf("pp-p=%d *pp-a=%d **pp=%d\n", pp-p, *pp-a, **pp ); }

a) a=8 p=42474778 pp=8 pp-p=1 pp-a=1 pp=7   b) a=8 p=Null pp=8 pp-p=0 pp-a=2 pp=6   c) a=8 p=42474778 pp=8 pp-p=2 pp-a=2 pp=6     d) a=8 p=42474778 pp=8 pp-p=1 pp-a=2 pp=7   e) a=Null p=Null pp=Null pp-p=0 pp-a=0 pp=0   f) a=8 p=8 pp=8 pp-p=1 pp-a=1 pp=7

26. Что напечатает следующая программа?

#include <stdio.h>

char *c[ ] = { "ENTER", "NEW", "POINT", "FIRST" };

char ** cp[ ] = { c+3, c+2, c+1, c };

char ***cpp=cp;

main()

{ printf("%s", **++cpp );

printf("%s ", * -- *++cpp+3 );

printf("%s", *cpp[ -2 ]+3 );

printf("%s\n", cpp[ -1 ][ -1 ]+1 );

}

a) ENTER NEW POINT FIRST

b) ENTER FIRST

c) POINTER STEW

d) NEW POINT

 

27. Верно ли решена задача: « Описать функцию, меняющую местами значения двух переменных символьного типа. Использовать эту функцию для изменения значений символьных переменных a и b.»

a) void swap ( char x, char y) b) void swap ( char *x, char *y)

{ char t; t = x; x = y; y = t;} { char *t; t = x; x = y; y = t;}

main() main()

{ char a,b; { char a,b;

scanf("%c%c", &a, &b); scanf("%c%c", &a, &b);

swap(a,b); swap(&a, &b);

printf("a=%c,b=%c\n",a,b); printf("a=%c,b=%c\n",a,b);

} }

c) void swap ( char *x, char *y) d) void swap ( char *x, char *y)

{ char t; t = *x; *x = *y; *y = t;} { char t; t = *x; *x = *y; *y = t;}

main() main()

{ char a,b; { char a,b;

scanf("%c%c", &a, &b); scanf("%c%c", &a, &b);

swap(a,b); swap(&a, &b);

printf("a=%c,b=%c\n",a,b); printf("a=%c,b=%c\n",a,b);

} }

e) void swap ( char x, char y) f) void swap ( char &x, char &y)

{ char *t; t = &x; &x = &y; &y = t;} { char t; t = x; x = y; y = t;}

main() main()

{ char a,b; { char a,b;

scanf("%c%c", &a, &b); scanf("%c%c", &a, &b);

swap(&a, &b); swap(a, b);

printf("a=%c,b=%c\n",a,b); printf("a=%c,b=%c\n",a,b);

} }

 

28. Что напечатает следующая программа?

#include <stdio.h>

int a[ 3 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

main()

{ int i;

for ( i = 0; i < 2; i ++ )

printf(" a[ i ][2–i]=%d *(*(a+i)+i)=%d\n", a[ i ][2–i ], *(*(a+i)+i));}

 

a) a[ i ][2–i]=3 *(*(a+i)+i)=1 a[ i ][2–i]=5 *(*(a+i)+i)=5   b) a[ i ][2–i]=2 *(*(a+i)+i)=2 a[ i ][2–i]=5 *(*(a+i)+i)=5   c) a[ i ][2–i]=5 *(*(a+i)+i)=1 a[ i ][2–i]=3 *(*(a+i)+i)=3   d) a[ i ][2–i]=3 *(*(a+i)+i)=1 a[ i ][2–i]=3 *(*(a+i)+i)=1

 

29. Верны ли следующие утверждения.

a) В функцию как аргумент передается весь массив.

b) Если двигаться по массиву в порядке расположения элементов в памяти, то правый индекс массива изменяется быстрее левого.

c) В функцию передается указатель на первый элемент массива.

d) При передаче многомерных массивов функции следует определить все размерности, кроме самой левой.

 

 

30. Определить какие из перечисленных утверждений являются верными:

 

a) Строка-это одномерный массив символов, заканчивающийся символом '\0'

b) Специальные функции – макросы для проверки типа символьных литер собраны в библиотеке <string.h>

c) Программист не имеет возможность контролировать выход за границу строки.

d) Функция isprint(c) возвращает ненулевое значение если c-печатаемый символ, включая пробел.

e) Функция int toupper (int с) переводит с на нижний регистр

f) В Си осуществляется автоматический контроль выхода за границы массива.

g) Функция ispunct(c) возвращает символ с преобразованный к верхнему регистру.

h) Имя строки является указателем на ее первый символ.

i) Аргумент функции isxdigit(c) имеет тип int

j) Строка - особый вид массива, который имеет символ конца, что позволяет контролировать выход за границы строки.

k) Функция isascii(c) проверяет, соответствует ли ее аргумент набору ASCII-символов (О-127);

l) Неинициализированный указатель (char *s;) содержит "мусор", который будет восприниматься как адрес.

m) Функция int tolower(int с) переводит с на верхний регистр;

n) При создании строки надо следить за тем, чтобы строка заканчивалась нуль-терминатором.

o) Функция isalpha(c) проверяет является ли символ с латинской буквой.

p) Функция iscntrl(c) возвращает код ошибки если символ с не является управляющим символом.

q) Функция isxdigit(c) переводит символ с в шестнадцатеричную систему счисления.

r) Функция isspace(c) проверяет знак пробела, но не проверяет переход на новую строку и табуляцию.

 

31. Верны ли следующие утверждения:

a) описание структуры начинается с ключевого слова struct и содержит список объявлений членов структуры, заключенный в фигурные скобки;

b) за словом struct должен следовать идентификатор, называемый тегом структуры;

c) тег структуры используется в качестве имени типа при описании переменных;

d) имена членов структуры могут совпадать с именами переменных в той же области видимости;

e) имя тега структуры может совпадать с именами переменных в той же области видимости;

f) имя тега структуры может совпадать с именами членов этой структуры;

g) имена членов разных структур могут совпадать;

h) за описанием структуры (после правой закрывающей фигурной скобки) обязательно должен следовать список переменных;

i) для доступа к членам структуры используется операция . (точка);

j) структуры не могут быть вложенными;

k) структурную переменную при ее описании можно инициализировать списком константных выражений, заключенным в фигурные скобки;

32. Верны ли следующие утверждения:

a) к структурам одного типа применима операция присваивания;

b) к структурам одного типа, не содержащим вложенных структур, применима операция сравнения ( выполняется почленное сравнение );

c) параметром функции может быть указатель на структуру, но не сама структура;

d) параметры функции – структуры передаются по значению;

e) результатом работы функции может быть структура;

a) результатом работы функции может быть указатель на структуру;

b) функция sizeof(struct any) выдает результат, равный сумме длин всех полей этой структуры;

h) к структурам применима операция взятия адреса.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.