1. Что будет выведено на экран после выполнения программного фрагмента?
(ответом должны являться два числа, выведенные через пробел)
class Program
{
static void swap(int x,ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
static void Main()
{
int a = 10,b=20;
swap(a,ref b);
Console.WriteLine("{0}\n{1}",a,b);
}
}
2. Какое из следующих утверждений верно:
- void метод не может быть вызван в выражении
- типизированный метод не может быть вызван вне выражения или присваивания
- типизированный метод не может иметь out-параметры
3. Если мы объявили метод void Func(x, out y), какой из вызовов правильный
- Func(a,b)
- Func(a,out b)
- Оба
4. Переменная x объявлена в теле функции F1 и переменная с таким же именем объявлена в теле функции F2. Что произойдет:
- ошибка компиляции
- ошибка периода выполнения
- программа проработает, но результаты будут неправильные
- программа будет откомпилирована, выполнена и даст правильные результаты
5. В результате выполнения фрагмента программы:
class Program
{
static void F(int a)
{
++a;
}
static void Main()
{
int a=5;
F(a);
Console.WriteLine(a);
}
}
на экран будет выведено значение:
a. 0
b. 5
c. 6
6. Предположим, что у нас имеются два определения функции sum со следующими параметрами:
double sum(double x, double y);
double sum(double x, int y).
Какое из них будет использоваться в вызове s=sum(5,10.00)?
a. double sum(double x, double y);
b. double sum(double x, int y);
c. такой вызов ошибочен
7. В результате выполнения фрагмента программы:
class Program
{
static int F(int a, int b)
{
return 2*a+b;
}
static void Main()
{
int a=1, b=5;
Console.WriteLine(F(b, a));
}
}
на экран будет выведено значение:
a. 7
b. 11
c. 12
8. Спецификатор ref используется для передачи параметра:
a. по значению
b. по ссылке
c. в качестве выходного параметра.
9. Дан рекурсивный метод:
static int F(int n)
{
if (n>10)
return n+F(n-10);
else return 0;
}
Чему равно F(42)? ________________
10. Дан рекурсивный метод:
static int F(int n)
{
if (n==1)
return 1;
else if (n%2==0) return n+F(n/2);
else return n-F(n+1);
}
Чему равно F(27)? ________________
11. Дан рекурсивный метод:
static void F(int n)
{
if (n > 1) { Console.Write(n + " "); F(n - 1); }
}
Что будет выведено на экран при вызове метода F(5)?
a. 1 2 3 4 5
b. 5 4 3 2 1
c. 2 3 4 5
d. 5 4 3 2
12. Дан рекурсивный метод:
static void F(int n)
{
if (n>0) { Console.Write(n+ " ");F(n-1); Console.Write(n+ " ");}
}
Что будет выведено на экран при вызове метода F(3)?
a. 3 2 1 1 2 3
b. 3 2 1 2 3
c. 1 2 3 3 2 1
d. 1 2 3 2 1
13. При выполнении фрагмента программы:
byte x = 100; byte y = 10;
try
{
byte result = unchecked((byte)(x * y));
Console.WriteLine(result);
}
catch (OverflowException)
{
Console.WriteLine("возникло переполнение");
}
на эран будет выведено:
a. 232
b. 255
c. 1000
d. возникло переполнение
14. В результате выполнения следующего фрагмента программы
int x = 10, y = 0;
try
{
Console.WriteLine("Частное = " + x / y);
}
catch (DivideByZeroException)
{
Console.WriteLine("Деление на ноль");
}
catch (Exception)
{
Console.WriteLine("Сгенерировано исключение");
}
- появится сообщение «Деление на ноль»
- появится сообщение «Сгенерировано исключение»
- произойдет ошибка компиляции
- программа выполнится, но на консоль ничего выведено не будет
15. Какое значение примет s в результате выполнения следующего программного фрагмента, если мы будем вводить с клавиатуры -4, 5, -6, е, -5:
int x,s=0;
for (int i = 1; i <= 5; i++)
{
try
{
x = Int16.Parse(Console.ReadLine());
if (x > 0) throw new Exception();
s += x;
}
catch
{
Console.WriteLine("введено недопустимое значение");
}
}
Console.WriteLine("s="+s);
- -4
- -10
- -15
- 0
17. Какая последовательность сообщений будет появляться на экране при вводе значений 5, 124, е, 123456789876543, 23
int x;
for (int i = 1; i <= 5; i++)
{
try
{
x = Int16.Parse(Console.ReadLine());
if (x < 0 || x > 100) throw new IndexOutOfRangeException("вы ввели " + x);
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("число должно быть между 0 и 100. " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("исключение " + ex.Message);
}
finally
{
Console.WriteLine("ok");
}
}
a. x=5
ok
Число должно быть между 0 и 100. вы ввели 124
ok
Сгенерировано исключение. Входная строка имеет неверный формат.
ok
Сгенерировано исключение. Значение было недопустимо малым или недопустимо большим
ok
x=23
ok
b. x=5
Число должно быть между 0 и 100. вы ввели 124
Сгенерировано исключение. Входная строка имеет неверный формат.
Сгенерировано исключение. Значение было недопустимо малым или недопустимо
большим
x=23
ok
c. x=5
Число должно быть между 0 и 100. индекс выходит за границы диапазона
Сгенерировано исключение. Входная строка имеет неверный формат.
Сгенерировано исключение. Значение было недопустимо малым или недопустимо большим
x=23
ok
d. x=5
ok
Число должно быть между 0 и 100. индекс выходит за границы диапазона
ok
Сгенерировано исключение. Входная строка имеет неверный формат.
ok
Сгенерировано исключение. Значение было недопустимо малым или недопустимо большим
ok
x=23
ok
e. x=5
ok
Число должно быть между 0 и 100. вы ввели 124
Сгенерировано исключение. Входная строка имеет неверный формат.
Сгенерировано исключение. Значение было недопустимо малым или недопустимо большим
x=23
ok
Правильные ответы:
№ задания | ||||||||||||||||
Ответ | a | b | d | b | a | b | b | -7 | d | a | a | a | c | a |