Тест «Методы и обработка исключительных ситуаций»




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. Какое из следующих утверждений верно:

 

  1. void метод не может быть вызван в выражении
  2. типизированный метод не может быть вызван вне выражения или присваивания
  3. типизированный метод не может иметь out-параметры

 

3. Если мы объявили метод void Func(x, out y), какой из вызовов правильный

 

  1. Func(a,b)
  2. Func(a,out b)
  3. Оба

 

4. Переменная x объявлена в теле функции F1 и переменная с таким же именем объявлена в теле функции F2. Что произойдет:

 

  1. ошибка компиляции
  2. ошибка периода выполнения
  3. программа проработает, но результаты будут неправильные
  4. программа будет откомпилирована, выполнена и даст правильные результаты

 

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("Сгенерировано исключение");

}

  1. появится сообщение «Деление на ноль»
  2. появится сообщение «Сгенерировано исключение»
  3. произойдет ошибка компиляции
  4. программа выполнится, но на консоль ничего выведено не будет

 

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);

 

  1. -4
  2. -10
  3. -15
  4. 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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: