Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
122
Добавлен:
19.04.2015
Размер:
81.41 Кб
Скачать

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

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

}

}

  1. Какое из следующих утверждений верно:

  1. void метод не может быть вызван в выражении

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

  3. типизированный метод не может иметь out-параметры

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

  1. Func(a,b)

  2. Func(a,out b)

  3. Оба

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

  1. ошибка компиляции

  2. ошибка периода выполнения

  3. программа проработает, но результаты будут неправильные

  4. программа будет откомпилирована, выполнена и даст правильные результаты

  1. В результате выполнения фрагмента программы:

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("возникло переполнение");

}

на эран будет выведено:

  1. 232

  2. 255

  3. 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

Правильные ответы:

№ задания

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Ответ

10

10

a

b

d

b

a

b

b

108

-7

d

a

a

a

c

a

5