Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник тестовых вопросов и задач по языку программирования Си. В 2 частях. Ч. 1. Практикум
.pdf
91
30. Что будет выведено в результате выполнения следующей про-
граммы?
#include <stdio.h>
int main(void)
{
char str[ ]=” Happy New Year ”;
printf(”%d”,strlen(str));
return 0;
}
• 16;
• 17;
• 12;
• 13.
ОТВЕТЫ К ВОПРОСАМ И ЗАДАЧАМ ТЕМЫ 8
1. Какие из примеров инициализации символьного массива являются
неверными?
• char k[7]; k=Привет!'; Недостаточная размерность массива.
• char i[6]='Привет'; Недостаточная размерность массива.
2. Какое из нижеследующих описаний символьного массива не соот-
ветствует синтаксису языка Си?
• char f[4 ]= 'Hello'; Размер массива меньше, чем количество элементов
массива.
3. Какое из следующих высказываний является неверным?
• в Си строка является стандартным типом данных. Неверно, в Си отсут-
ствует стандартный строковый тип данных.
4. Какой ASCII-код у ноль-символа или '\0'?
• 0.
Ноль-символ — это символ с кодом, равным нулю, что записывается
в виде esp-последовательности '\0'.

92
5. Какие из следующих высказываний является верными?
• если строка определена с помощью двойных кавычек, то в конце авто-
матически добавляется ноль-символ '\0';
• размер строки определяется без учета ноль-символа '\0' в конце.
6. Как размещается в памяти Cи-строка?
• в последовательных адресах памяти.
Си-строка является одномерным массивом, а элементы массивов всегда
размещаются в последовательных адресах памяти.
7. Соединение двух строк выполняется с помощью функции:
• strcat().
8. Копирование одной строки в другую выполняется с помощью
функции:
• strcpy().
9. Сравнение двух строк выполняется с помощью функции:
• strcmp().
10. При помощи какой функции можно ввести строку, представляющую
собой предложение из нескольких строк?
• gets().
11. Какой результат даст функция strcpm(), если две строки являются
одинаковыми?
• 0.
12. Какой результат даст функция strcpm(), если две строки являются
одинаковыми?
• Имя Фамилия.
13. Каков вывод программы на языке Си с использованием следующих
строк?
• 0.

93
14. Чему должен быть равен Х, чтобы обеспечить корректный ввод
строки длиной 10?
• 11.
Поскольку '\0' всегда является последним символом строки, массив сим-
волов должен иметь на один символ больше, чем длина строки, которую пред-
полагается хранить в данном массиве.
15. Строка может быть определена как массив символьного типа, ко-
торый завершается символом:
• Ноль-символ.
Си-строка — это одномерный массив символов, заканчивающийся ноль-
символом.
16. Какой спецификатор формата используется для печати строки или
массива символов в функциях printf или scanf?
• %s.
17. Каков вывод программы на языке Си с использованием следующих
строк?
• Большие надежды.
Спецификатор %s обеспечивает печать массива символов.
18. Каков вывод программы на языке Си с использованием следующих
строк?
• Привет. Если инициализировать посимвольно массив, то '\0' надо ука-
зывать вручную.
19. Укажите правильные способы преобразования данного символьного
массива в Си-строку:
• str[11] = 0; str[11] = '\0'; str[]={'В','о','й','н','а',' ','и', ' ', 'м','и','р','\0'};
Си-строка — это одномерный массив символов, заканчивающийся нольсимволом, т.е. кодом, равным нулю, что записывается в виде esp-последовательности '\0'.
20. Каков вывод программы на языке Си с использованием следующих
строк?
• Ура /*код случайного символа*/ Ура- Ура-а;

94
str не является Си-строкой, поскольку это не массив char с ноль-символом
в конце. str — это адрес массива, который преобразуется в char с помощью спецификатора %c. При использовании спецификатора %s будет выводиться первое
число, преобразованное в char.
21. Каков вывод программы на языке Си с использованием следующих
строк?
• аась.
22. Какая функция используется для считывания строк с пробелами?
• gets().
Для считывания строки, содержащей пробелы, нужно использовать функ-
цию gets(). Вводимые символы принимаются до тех пор, пока не будет нажата
клавиша Enter.
23. Какое значение должно быть присвоено константе shift, чтобы на
печать вывелась подстрока «счастье»?
• 8.
Подстрока «счастье» находится в строке «Дамское счастье» со смещением 8.
24. Каково будет содержимое строки s1 в результате выполнения сле-
дующей программы?
• xyzxyzz.
25. Функции strcpy и strcat копируют исходную строку в часть массива
назначения. Чем они отличаются друг от друга?
• функция strcat оставляет исходную строку как есть, а функция strcopy
перезаписывает ее.
26. Что будет выведено в результате выполнения следующей про-
граммы?
• 0.
27. Что будет выведено в результате выполнения следующей про-
граммы?
• -1.

95
28. Что будет выведено в результате выполнения следующей про-
граммы?
• 1.
29. Что будет выведено в результате выполнения следующей про-
граммы?
• Year.
30. Что будет выведено в результате выполнения следующей про-
граммы?
• 16.

96
ТЕМА 9. АДРЕСА И УКАЗАТЕЛИ
1. Выделение памяти по требованию во время выполнения программы
называется:
• регистровое выделение памяти;
• динамическое распределение памяти;
• статическое распределение памяти.
2. Над указателями могут выполняться операции:
• возведения в степень;
• деления;
• умножения;
• вычитания;
• сложения.
3. Укажите операторы получения адреса и разыменования:
• ? и &
• : и ?
• & и *
• & и %
4. Как обеспечивается доступ к переменной без непосредственного
обращения к ней самой?
• по имени массивов;
• с использованием индексов массивов;
• с использованием указателей.
5. Дана последовательность операторов:
int h[6]={1,2,3,4,5,6};
int *ptr;
ptr=h;
h[3]=h[5];
printf(“%d”,*(ptr+3));

97
Что будет выведено на экран?
• 6;
• 5;
• 4;
• 3.
6. Дана последовательность операторов:
char *p1, *p2, p3=’a’;
p1=&p3;
*p1=’b’; *p2=’a’; p1=p2;
printf(“%c%c%c”, *p1,*p2, p3);
На экран будет выведено:
• адрес памяти, адрес памяти, b;
• b, b, адрес памяти;
• a, a, b;
• a, a, a.
7. Какое из указанных ниже инициализирующих выражений недопу-
стимо для указателя int *p?
• &b (где b — переменная типа int);
• 0x80000000;
• ‘25’;
• p1 (где p1 — инициализированный указатель).
8. Какое из указанных ниже инициализирующих выражений недопу-
стимо для указателя char *p?
• &a (где а — переменная типа char);
• NULL;
• p1 (где p1 — инициализированный указатель);
• ‘a’.
9. Дана последовательность операторов:
int *p1, *p2, p3=10;
p1=&p3;
*p1=20;
p2=p1;
printf (“%d%d%d”, *p1, *p2, p3);

98
Что будет выведено на экран?
• адрес памяти, адрес памяти, 20;
• адрес памяти, адрес памяти, 10;
• 20, 20, адрес памяти;
• 10, 10, 10;
• 20,20,20.
10. Укажите верные варианты определения указателя:
• именованная константа, значением которой служит адрес участка памяти,
выделенной для объекта конкретного типа;
• переменная, значением которой служит адрес участка памяти, выделенной
для объекта конкретного типа;
• именованная константа, значением которой могут быть величины такого
же типа, что и тип указателя;
• переменная, значением которой могут быть величины такого же типа,
что и тип указателя.
11. Каким будет тип переменной-указателя на переменную типа float?
• int;
• float;
• без типа данных;
• unsigned int.
12. Перед использованием переменной-указателя она должна быть:
• объявлена;
• инициализирована;
• объявлена и инициализирована;
• ничего из перечисленного.
13. В языке Си переменная-указатель на целое число может быть со-
здана с помощью объявления:
• int p*;
• int *p;
• int +p;
• int $p;

99
14. Что выведет следующая программа на Си?
#include <stdio.h>
int main()
{
int arr[] = {20,25,35,45,55}, *ptr;
++*(ptr = arr);
printf("\n\t%d ", *ptr);
ptr += 3;
printf("\t%d ", *ptr);
return 0;
}
• 21 45;
• 25 45;
• 21 35.
15. Что выведет следующая программа на Си?
#include <stdio.h>
int main()
{
char *ptr;
char str[] = "1234567";
ptr = str;
ptr += 3;
printf("\n\t%c ", *ptr);
return 0;
}
• 3;
• 4;
• 5.
16. Что выведет следующая программа на Си?
#include <stdio.h>
int main()
{

100
char *ptr1 = 0, *ptr2 = NULL;
if (ptr1 == ptr2) printf ("\n\tПривет!");
else printf("n\tДо свидания!");
return 0;
}
• Привет!
• До свидания!
17. Что означает следующее объявление и инициализация в Си?
int arr[5];
int *ptr;
ptr = arr;
• ptr — одномерный массив размером 5, содержащий указатели на эле-
менты массива;
• ptr является указателем на целочисленный массив из 5 элементов;
• то же самое, что и int *ptr;
• ничего из перечисленного.
18. В каком из перечисленных заголовочных файлов определен макрос
NULL в Си?
• stdio.h;
• math.h;
• srdlib.h.
19. Какое из указанных присваиваний является синтаксически пра-
вильным для объявленных переменных-указателей?
void *vptr;
char *cptr;
• vptr = cptr
• cptr = vper
• *vptr = *cptr
• *cptr = vptr
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
