Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборник тестовых вопросов и задач по языку программирования Си. В 2 частях. Ч. 1. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]