c_sharp_vse_(14.12.13) / kudrina_e_v_ogneva_m_v_portenko_m_s_programmirovanie_na_yazy / index.files / test / тест_методы_исключения
.docТест «Методы и обработка исключительных ситуаций»
-
Что будет выведено на экран после выполнения программного фрагмента?
(ответом должны являться два числа, выведенные через пробел)
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);
}
}
-
Какое из следующих утверждений верно:
-
void метод не может быть вызван в выражении
-
типизированный метод не может быть вызван вне выражения или присваивания
-
типизированный метод не может иметь out-параметры
-
Если мы объявили метод void Func(x, out y), какой из вызовов правильный
-
Func(a,b)
-
Func(a,out b)
-
Оба
-
Переменная x объявлена в теле функции F1 и переменная с таким же именем объявлена в теле функции F2. Что произойдет:
-
ошибка компиляции
-
ошибка периода выполнения
-
программа проработает, но результаты будут неправильные
-
программа будет откомпилирована, выполнена и даст правильные результаты
-
В результате выполнения фрагмента программы:
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("возникло переполнение");
}
на эран будет выведено:
-
232
-
255
-
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
Правильные ответы:
№ задания |
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 |