Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.76 Mб
Скачать

Вопросы к разделу 5. Функции

1. Если функция не возвращает значения, как должен выглядеть прототип этой функции?

а) void myFunction ();

б) float myFunction (int, int);

в) myFunction (int, int).

2. Если не объявить тип возвращаемого функцией значения, то какой тип будет принят по умолчанию для возвращаемого значения?

а) int;

б) long;

в) unsigned long.

3. Что должно соответствовать в прототипе и в определении одной и той же функции?

а) имя функции и список формальных параметров;

б) тип возвращаемого значения и имя функции;

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

4. Может ли изменить функция значение глобальной переменной, если передать указатель на эту переменную в качестве параметра функции?

а) нет;

б) да;

в) значение глобальной переменной нельзя изменить.

5. Что такое рекурсия?

а) способность функции вызывать другую функцию;

б) способность функции в качестве параметра использовать другую функцию;

в) способность функции вызывать саму себя.

6. Какое объявление указателя на функцию является правильным?

а) int (*funcPtr) (int);

б) long *funcPtr (int);

в) оба правильные.

7. Что будет объявлять выражение long *func (int)?

а) указатель на функцию, возвращающую значение типа long и принимающую в качестве параметра данные типа int;

б) функцию, возвращающую указатель на данные типа long и принимающую в качестве параметра данные типа int;

в) так объявлять нельзя.

8. Правильно ли задана функция MyFunc()?

#include <stdio.h>

void MyFunc(int b);

main()

{

int a, c;

c = MyFunc(a);

printf(“%d”, c);

return 0;

}

void MyFunc(int b)

{

return (4 * b);

}

а) неправильно передан параметр в функцию;

б) функция не может возвращать значение;

в) всё правильно.

9. При передаче указателя в параметр функции копируется:

а) значение;

б) и значение, и адрес;

в) адрес.

10. Должны ли имена параметров, указанные в прототипе, определении и вызове функции, соответствовать друг другу?

а) должны;

б) не должны;

в) имена указателей должны, а переменных не должны.

Вопросы к разделу 6. Строки

1. Как правильно ввести две строки, и получить в переменной str их конкатенацию?

а)

char str[80];

scanf("%s", str);

scanf("%s", str + strlen(str));

б)

char str1[40], str2[40], str[80];

scanf("%s", str1);

scanf("%s", str2);

str = str1 + str2;

в)

char str[40], str1[40];

scanf("%s", &str);

scanf("%s", &str1);

str = strcat(str, str1);

г) ни один из ответов а) – в) не является правильным;

д) несколько ответов из а) – в) являются правильными.

2. Как правильно создать временную копию строки str1 в str2?

а)

char str1[40], str2[30];

str2 = strdup(str1);

б)

char str1[40], str2[30];

str2 = strdup(str1 + 10);

в)

char str1[40], *str2;

str2 = strdup(str1);

г) ни один из ответов а) – в) не является правильным;

д) несколько ответов из а) – в) являются правильными.

3. Как правильно скопировать строку из str2 в str1?

а)

char str1[40], str2[30];

str1 = str2;

б)

char str1[40], str2[30];

str1 = str2 + 10;

в)

char str1[40], *str2;

strcpy(&str2, str1);

г) ни один из ответов а) – в) не является правильным;

д) несколько ответов из а) – в) являются правильными.

4. Как правильно создать в str2 строку, являющуюся конкатенацией str1 и str2?

а)

char str1[40], str2[30];

int j;

for (j = 0; str1[j] || *str2[j]; j++)

{

str2[j + strlen(str2)] = str2[j];

str2[j] = str1[j]

}

б)

char str1[40], str2[30];

strcat(str1, str2);

strcpy(str2, str1);

в)

char str1[40], *str2;

str2 = str1 + str2;

г) ни один из ответов а) – в) не является правильным;

д) несколько ответов из а) – в) являются правильными.

5. Как правильно объявить массив array из 20 строк?

а)

typedef char *string;

string array[20];

б)

const char *array[20];

в)

char array [20];

г) ни один из ответов а) – в) не является правильным

д) несколько ответов из а) – в) являются правильными

6. Функции передан массив строк: function(char **sa). Как правильно получить в переменной res пятый символ третьей строки?

а)

char res;

res = sa[5][3];

б)

char res;

res = *(sa +5) + 3;

в)

char res;

res = *(*sa +5) + 3;

г) ни один из ответов а) – в) не является правильным;

д) несколько ответов из а) – в) являются правильными.

7. Как правильно вывести на экран все символы строки, начиная с пятого?

а)

char* str;

puts (str[5]);

б)

char* str;

puts (&str[5]);

в)

char* str;

puts (str + 5);

г) ни один из ответов а) – в) не является правильным.

8. Сколько байт в памяти займет строка str2 после последнего присваивания?

char *str2 = "first";

str2 = strdup(str2, "second");

а) 11;

б) 12;

в) в примере есть ошибки;

г) ни один из ответов а) – в) не является правильным.

9. Сколько байт в памяти займет строка str1 после последнего вызова функции?

char str1[] = "first", str1[] = "second";

str2 = strcpy(str1, str2);

а) 5;

б) 6;

в) 7;

г) в примере есть ошибки;

д) ни один из ответов а) – г) не является правильным.

10. Какую максимальную длину может иметь Си-строка (DOS)?

а) 255;

б) 256;

в) 65535;

г) неограниченную;

д) ни один из ответов а) – г) не является правильным.