Из приведенных ниже высказываний укажите все истинные высказывания:
(1) модификатор (спецификатор) protected
определяет доступность вложенного класса коду производных классов
(2) модификатор (спецификатор) protected
определяет, где доступен не вложенный класс или любой другой не вложенный тип
(3) модификатор (спецификатор) protected
определяет доступность любого члена класса в производных классах в любом коде
(4) модификатор (спецификатор) protected
определяет доступность любого члена класса в производных классах только в пределах включающей его сборки
(5) модификатор (спецификатор) protected
нельзя применять к событиям
Из приведенных ниже высказываний укажите истинное высказывание:
(1) если метод описывается вне класса, то в классе должен быть указан его прототип
(2) если метод не возвращает значение, то он должен иметь модификатор (спецификатор) virtual
(3) для вызова метода можно не создавать экземпляр (объект) класса только в том случае, если метод вызывается внутри класса
(4) метод может иметь пустое тело
(5) метод должен возвращать какое-либо значение
Сборка Assembly2.cs
, приведенная ниже:
class Test3
{ static void Main()
{ ClassUser user = new ClassUser();
int count = user.count; System.Console.Write("count=" + count);
}
}
ссылается на подключенную сборку Assembly1.cs
, которая имеет следующий код:
internal class ClassUser
{ public int count = 10; }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполнится, так как сборка Assembly2.cs создает объект user
, в то время как класс ClassUser
не принадлежит сборке Assembly2.cs
(2) count=0
(3) count=10
(4) будет выдано сообщение об ошибке компиляции, так как класс ClassUser
недоступен в соответствии с его модификатором доступа
Исходный модуль содержит код:
internal class Rectangle
{ public double width, hight;
public void Zoom(double d)
{ width += d; hight += d; }
public void Rectangle(double width, double hight)
{ this.width = width; this.hight = hight; }
}
class Program
{ static void Main()
{ Rectangle p = new Rectangle(10, 20);
p.Zoom(-5);
System.Console.Write("{0} {1}", p.width, p.hight);
} }
Метод
Main
разрабатывался для изменения размера прямоугольника.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) значение полей width
и hight
не определено
(2) статический метод Main
не может обращаться к полям объекта
(3) тип Rectangle
не доступен из класса Program
(4) в конструкторе не должно быть ключевого слова void
(5) в классе Rectangle
не определен конструктор без параметров
Исходный модуль содержит код:
class Rectangle
{ double width=15, hight=10, s;
string t = "прямоугольник";
public Rectangle(double w, double h) { width = w; hight = h; s = w * h; }
public Rectangle(int w, int h) { width *= w; hight*=h; s = width * hight; }
public string RectForm() { return string.Format("{0}: площадь={1}. ", t, s); }
}
class Program
{ static void Main()
{ Rectangle k = new Rectangle(2, 3); Rectangle t = new Rectangle(3, 4.0);
System.Console.Write(k.RectForm() + t.RectForm());
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) прямоугольник: площадь=900. прямоугольник: площадь=12
(2) прямоугольник: площадь=900. прямоугольник: площадь=1800
(3) прямоугольник: площадь=6. прямоугольник: площадь=1800
(4) прямоугольник: площадь=6. прямоугольник: площадь=12
(5) программа завершится аварийно, так как конструкторы имеют одинаковое количество параметров
Укажите модификатор метода, который позволяет для его вызова из других классов не создавать объект:
(1) virtual
(2) protected
(3) public
(4) partial
(5) static
Исходный модуль содержит код:
class A
{ private int b;
public static int B
{ get { return b*b; } set { b = value; } }
}
public class Test
{ public static void Main()
{ A.B = 5;
System.Console.Write(A.B);
}
}
Метод
Main
разрабатывался для вывода квадрата числа 5.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) свойство B
не может быть статическим
(2) статическое свойство B
использует нестатическое поле
(3) для использования свойства В
должен быть создан объект класса А
(4) значение поля b
не определено
(5) поле b
недоступно для использования в свойстве
Исходный модуль содержит код:
class Сотрудник
{
private int id;
private float зарплата;
public Сотрудник(int i, float z) { id = i; зарплата = z; }
public float Зарплата(int номер) { return номер < id ? зарплата : -1; }
public void Зарплата(int номер, ref float зарпл)
{ if (номер < id)
{ float зрпл = зарплата;
зарплата = зарпл; зарпл = зрпл;
} } }
class Program
{ static void Main()
{ Сотрудник Иванов = new Сотрудник(12, 40000.0f);
float z = 45000.0f; Иванов.Зарплата(10, ref z);
System.Console.Write("Зарплата Иванова = " + z);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) 40000
(2) 45000
(3) 20000
(4) -1
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Программа предназначена для присвоения переменной r
класса B
значения 4 :
class A
{ public B b = null;
public A()
{ B b = new B(); }
public class B
{ static public int r;
public int t;
} }
class Test
{ public static void Main()
{ A a = new A();
___________
}
}
Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:
(1) a.B.r = 4;
(2) A.B.r = 4;
(3) a.b.r = 4;
(4) A.b.r = 4;
(5) B.r = 4;
Язык С# допускает
(1) наследование классом нескольких классов
(2) наследование классом нескольких интерфейсов
(3) наследование классом делегата
(4) наследование классом структуры
(5) наследование структурой класса
Исходный модуль содержит код:
class A
{ protected internal int x = 123; }
class B : A
{
static void Main()
{ A a = new A();
int i = a.x = 10;
B b = new B();
int j = b.x = 20;
System.Console.Write("a.x={0} b.x={1}", i, j);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) a.x=20 b.x=20
(3) a.x=10 b.x=20
(4) a.x=10 b.x=10
(5) программа не выполнится, так как поле x
класса А
недоступно в классе В
Исходный модуль содержит код:
class Студент
{ string фамилия;
public string Фамилия { get { return фамилия; } }
public Студент(string ф) { фамилия = ф; }
}
class Магистр : Студент
{ int курс;
public int Курс { get { return курс; } }
public Магистр(string фам, int к) : base(фам) { this.курс = к; }
}
class Test
{ static void Main()
{ Студент Иванов = new Магистр("Петров",4);
System.Console.Write("{0} {1}", _______________ );
}
}
Требуется вывести фамилию и номер курса студента в виде: Петров 4
. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) Петров.Фамилия, Петров.Курс
(2) Иванов.Фамилия, ((Студент)Петров).Курс
(3) Петров.Фамилия, (Магистр)Петров.Курс
(4) Петров.Фамилия, ((Магистр)Петров).Курс
(5) Иванов.Фамилия, ((Магистр) Иванов).Курс
Исходный модуль содержит код:
using System;
class Дерево { public Дерево() { Console.Write("Дерево "); } }
class Плодовое : Дерево
{ public Плодовое (string s) { Console.Write(s); } }
class Яблоня : Плодовое
{ public Яблоня(string s) { Console.Write("Яблоня "); } }
class Program
{ static void Main() { object P = new Яблоня("Антоновка "); } }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Антоновка Плодовое Дерево
(2) Дерево Антоновка Яблоня
(3) Яблоня Антоновка Дерево
(4) Дерево Плодовое Антоновка
(5) программа не выполнится, так как обнаружена синтаксическая ошибка: у класса Плодовое
отсутствует конструктор без параметров
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) в производном классе модификатор new
у метода означает переопределение базового метода с тем же именем и не содержащего модификатор virtual
(2) в производном классе модификатор new
у метода означает переопределение базового метода с тем же именем, у которого может быть модификатор virtual
(3) в производном классе модификатор new
у метода означает переопределение базового метода с тем же именем, у которого должен быть модификатор virtual
(4) при переопределении базового метода с модификатором virtual
должен использоваться только модификатор override
(5) базовый метод с модификатором virtual
можно не переопределять в производном классе
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) можно создать объект абстрактного класса
(2) нельзя создать объект абстрактного класса
(3) абстрактный класс не должен содержать конструкторов
(4) абстрактный класс может содержать конструкторы
(5) абстрактный класс может содержать только конструктор без параметров
Проанализируйте приведенный код.
class Rectangle
{ public int x = 10, y = 20;
public Rectangle(int x, int y) { this.x = x; this.y = y; }
public virtual int Zoom
{ get { return x * y; } set { x += value; y += value; } }
}
class Параллепипед : Rectangle
{ public int z;
public Параллепипед(int x, int y, int z) : base(x, y) { this.z = z; }
public override int Zoom
{ get { return x*y*z; } set { x+=value; y+=value; z+=value; } }
}
class Program
{ static void Main()
{ Параллепипед парал = new Параллепипед(6, 8, 10);
парал.Zoom = -5; System.Console.Write(парал.Zoom); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 375
(3) 3
(4) 15
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
class Rectangle
{ public double width, hight;
public Rectangle(double width, double hight)
{ this.width = width; this.hight = hight; }
abstract public int Zoom(int d);
public double Zoom(double d)
{ width += d; hight += d; return width * hight; }
}
public class Program
{ static void Main()
{ Rectangle rect = new Rectangle(10, 20);
rect.Zoom(-5);
System.Console.Write("{0} {1}", rect.width, rect.hight);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 5 15
(3) 10 20
(4) 15 25
(5) будет обнаружена синтаксическая ошибка, связанная с неправильным описанием заголовка класса Rectangle
Проанализируйте приведенный код.
class Круг
{ protected double r = 5;
public Круг(double r) { this.r = r; }
public virtual int Фигура() { return (int)(3.14*r*r); }
}
class Цилиндр : Круг
{ double h = 10;
public Цилиндр(double r, double h) : base(r) { this.h = h; }
public override int Фигура() { return (int)(3.14*r*r*h); }
}
class Конус : Круг
{ double h = 10;
public Конус(double r, double h) : base(r) { this.h = h; }
public override int Фигура() { return (int)(3.14*r*r*h/3.0); }
}
class Program
{ static void Param(Круг fig) { System.Console.Write(fig.Фигура()+" "); }
static void Main()
{ Param(new Круг(1)); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 3
(3) 12
(4) 2
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
class TwoD
{ int x, у;
public TwoD() { x = у = 0; }
public TwoD(int i, int j) { x = i; у = j; }
public static bool operator true(TwoD op)
{ if ((op.x != 0) || (op.у != 0)) return true;
else return false;
}
public static bool operator false(TwoD op)
{ if ((op.x == 0) && (op.у == 0)) return true;
else return false;
}
}
class Program
{ public static void Main()
{ TwoD точка = new TwoD(5, 6);
if (_______________) System.Console.Write("точка1-ИСТИНА");
else System.Console.Write("точка-ЛОЖЬ");
} }
Требуется вывести строку точка-ИСТИНА
. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) программа завершится аварийно
(2) точка>0
(3) точка
(4) (точка.x != 0) || (точка.у != 0)
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) класс, реализующий интерфейс, не может включать свои собственные методы
(2) класс может реализовать несколько интерфейсов
(3) класс должен реализовать интерфейс в полном объеме
(4) класс может реализовать не все интерфейсные методы, а только требуемые
(5) класс не может одновременно наследовать базовый класс и интерфейсы
Проанализируйте приведенный код.
interface IФигура { int Периметр(); int Площадь(); }
class Квадрат : IФигура
{ int длина;
public Квадрат(int длина) { this.длина = длина;}
public int Периметр() { return 4*длина; }
public int IФигура.Площадь() { return длина * длина; }
}
class Test
{ public static void Main()
{ IФигура фигура;
фигура = new Квадрат(10);
System.Console.WriteLine("Периметр={0} Площадь={1}",
фигура.Периметр(), фигура.Площадь());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Периметр=40 Площадь=100
(3) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что для вызова методов Периметр()
и Площадь()
необходимо ссылку фигура
привести к типу Квадрат
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что ссылка фигура
должна иметь тип Квадрат
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с наличием модификатора public
у метода Площадь()
Проанализируйте приведенный код.
interface Интерфейс { int Метод(); }
class Класс1 : Интерфейс
{ int len;
public Класс1(int l) { len = l; }
public int Метод() { return len * len; }
}
class Класс2 : Класс1
{ int w, h;
public Класс2(int w1, int h1) : base (w1) { w = w1; h = h1; }
new public int Метод() { return w * h; }
}
class Test
{ public static void Main()
{ Класс2 объект1 = new Класс2(5, 10);
Интерфейс объект2 = объект1;
System.Console.WriteLine("Значение1={0} Значение2={1}",
объект1.Метод(), объект2.Метод());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Значение1=50 Значение2=50
(2) Значение1=50 Значение2=25
(3) Значение1=25 Значение2=25
(4) Значение1=25 Значение2=50
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с наличием модификатора new
у метода Метод
Проанализируйте приведенный код.
interface Интерфейс1 { string Метод(); }
interface Интерфейс2 { string Свойство {get;} }
class Класс1 : Интерфейс1
{ public string Метод() { return "Есть Интерфейс1. "; } }
class Класс2 : Интерфейс1, Интерфейс2
{ public string Метод() { return "Есть Интерфейс1. "; }
public string Свойство { get { return "Есть Интерфейс2. "; } }
}
class Test
{ static string GetValue(object ob)
{ string str = "Найден интерфейс ";
Интерфейс1 I1 = ob as Интерфейс1;
if (I1 != null) str = I1.Метод();
Интерфейс2 I2 = ob as Интерфейс2;
if (I2 != null) { str += I2.Свойство; }
return str;
}
public static void Main()
{ Класс2 объект2 = new Класс2();
System.Console.WriteLine( GetValue(объект2));
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Есть Интерфейс1. Есть Интерфейс2.
(2) Есть Интерфейс1.
(3) Есть Интерфейс2.
(4) Найден интерфейс
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что интерфейс не может определять свойство
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) структура может наследовать другие структуры
(2) структура не может наследовать другие структуры
(3) любое перечисление имеет ряд унаследованных статических методов
(4) структура, как и класс, является ссылочным типом данных
(5) структура является значимым, а не ссылочным типом данных
Проанализируйте приведенный код.
public enum Языки { СSarp, CPP, VB, Java }
struct Структура
{ public string Имя;
public Языки я;
public override string ToString()
{ return string.Format("Программист {0} программирует на {1}", Имя, я); }
}
class Test
{ public static void Main()
{ Структура c1 = new Структура();
Структура c2 = new Структура();
c1.Имя = "Иванов"; c1.я = Языки.СSarp;
c2 = c1; c1.Имя = "Петров"; c2.я = Языки.CPP;
System.Console.WriteLine(c2);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Программист Петров программирует на СPP
(2) Программист Иванов программирует на СSarp
(3) Программист Иванов программирует на СPP
(4) Программист Петров программирует на СSarp
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура не может иметь методов
Проанализируйте приведенный код.
interface Интерфейс { string Метод(); }
struct Структура : Интерфейс
{ public Структура(string и, int к) { имя = и; курс = к; }
public Структура() { имя = "Нет имени"; курс = 0; }
public string имя;
public int курс;
public string Метод()
{ return string.Format("Студент {0} учится на курсе {1}", имя, курс); }
}
class Test
{ public static void Main()
{ Структура c1 = new Структура("Зайцев",1);
Структура c2 = new Структура();
c2 = c1;
System.Console.WriteLine(c2.Метод());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Студент Зайцев учится на курсе 1
(2) Студент Нет имени учится на курсе 0
(3) Студент учится на курсе 0
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура не может наследовать интерфейс
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура не может определять конструктор по умолчанию
Проанализируйте приведенный код.
class Вуз { public string название;
public Вуз(string н) { название = н; } }
class Student
{ private string фамилия; private Вуз вуз;
public Student(string фам, Вуз уз) { фамилия = фам; вуз = уз; }
public override string ToString()
{ return string.Format("{0} учится в {1}" ,фамилия, вуз.название) ; } }
class Program
{ static void Main(string[] args)
{ Student[] студенты = new Student[2];
Вуз вуз1 = new Вуз("МГУ"); студенты[0] = new Student("Иванов", вуз1);
вуз1 = new Вуз("ГУ-ВШЭ"); студенты[1] = new Student("Петров", вуз1);
вуз1.название = "МВТУ"; System.Console.WriteLine(студенты[1]);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Иванов учится в МГУ
(3) Петров учится в ГУ-ВШЭ
(4) Петров учится в МВТУ
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
struct Auto { public string марка;
public Auto(string m) { марка = m; }
}
class Водитель
{ private string фамилия; private Auto марка;
public Водитель(string фам, Auto м) { фамилия = фам; марка = м; }
public override string ToString()
{ return string.Format("{0}у нравится {1}",фамилия, марка.марка) ; }
}
class Program
{ static void Main(string[] args)
{ Водитель[] водители = new Водитель[2];
Auto auto1 = new Auto("Мерседес");
Auto auto2 = new Auto("Тойота");
водители[0] = new Водитель("Иванов", auto1);
водители[1] = new Водитель("Петров", auto2);
auto2 = auto1; System.Console.WriteLine(водители[1]);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Иванову нравится Тойота
(3) Петрову нравится Тойота
(4) Петрову нравится Мерседес
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) для перебора элементов коллекции с помощью оператора foreach
необходимо реализовать интерфейс IEnumerable
(2) класс Queue
имеет метод, изменяющий порядок следования элементов всего списка или его части на обратный
(3) коллекция SortedList
хранит элементы, отсортированные по значению
(4) коллекция класса ListDictionary
является связным (однонаправленным) списком
(5) упаковка объектов - это процесс сжатия данных
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{ ArrayList al = new ArrayList();
al.Add("Иванов");
al.Add("Петров");
al.Add(3.1415f);
al.Add("Ларин");
foreach (string str in al)
Console.Write(str + " ");
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно в момент добавления в коллекцию числа вместо фамилии
(3) Иванов Петров Ларин
(4) Иванов Петров 3,1415 Ларин
(5) программа завершится аварийно в цикле foreach
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{ Hashtable ht = new Hashtable();
ht.Add("ВУЗ ", " МГУ");
ht.Add("Птица", "чиж");
ht["Ветер"] = " пассат ";
foreach (string str in ht.Keys)
Console.Write(str + ": " + ht[str] + ". ");
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно в момент изменения отсутствующей в таблице строки с ключом Ветер
(3) ВУЗ: МГУ. Птица: чиж. Ветер: пассат.
(4) Птица: чиж. Ветер: пассат.
(5) программа завершится аварийно в цикле foreach
Проанализируйте приведенный код.
public static void Main()
{
System.Collections.Queue q = new System.Collections.Queue();
q.Enqueue(11);
q.Enqueue(22);
q.Enqueue(33);
___________________
q.Enqueue(44);
foreach (int i in q) System.Console.Write(i + " ");
}
Требуется вывести числа 22 33 44
. Среди перечисленных ниже кодов укажите все коды, подстановка каждого из которых вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) q.Peek();
(2) q.Dequeue();
(3) q.Dequeue(11);
(4) long a=(int)q.Dequeue();
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) делегат - это структура
(2) делегат - это класс
(3) событие - это член класса
(4) делегат - это свойство
(5) делегат - это интерфейс
В классе Test
определен приведенный ниже код:
delegate string strMod(string str);
public static string ReplaceSpaces(string a) { return a.Replace(' ', '-'); }
public int StrLength(string a) { return a.Length; }
public static void Main()
{ strMod strOp = new strMod(Test.ReplaceSpaces);
string str = strOp("Несложный тест");
strOp = new strMod(new Test().StrLength);
System.Console.WriteLine(strOp(str));
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) будет обнаружена синтаксическая ошибка, связанная с вызовом метода StrLength
(2) программа завершится аварийно
(3) Несложный тест
(4) Несложный-тест
(5) 14
В классе Test
определен приведенный ниже код:
public delegate int CallBackMethod(int a1, int a2);
public static void Main()
{ int s = 0;
if (System.Console.ReadLine() == "1")
s = CallMethod(new CallBackMethod(CBMethod1));
else s = CallMethod(new CallBackMethod(CBMethod2));
System.Console.WriteLine(s);
}
public static int CallMethod(CallBackMethod cbMethod)
{ return cbMethod(33, 22); }
public static int CBMethod1(int a1, int a2) { return a1 + a2; }
public static int CBMethod2(int a1, int a2) { return a1 - a2; }
Пользователь собирается после запуска программы ввести цифру 1
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно
(3) 11
(4) Test.CallMethod
(5) 55
Проанализируйте приведенный код.
delegate void MyEventHandler(ref int a);
class MyEvent
{ public event MyEventHandler SomeEvent;
public void OnSomeEvent(ref int d)
{ if (SomeEvent != null) SomeEvent(ref d); } }
class EventTest
{ static void Handler1(ref int b) { b = 2 * b; }
static void Handler2(ref int c) { c = c + 12; }
public static void Main()
{ MyEvent evt = new MyEvent();
int a = int.Parse(System.Console.ReadLine());
if (a > 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler1);
else if (a < 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler2);
evt.OnSomeEvent(ref a); System.Console.WriteLine(a);
} }
Пользователь собирается после запуска программы ввести цифру 5
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 10
(3) 22
(4) 15
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) обработчик исключений - это метод, получающий управление в случае обнаружения определенной ошибки
(2) catch
-блок должен следовать сразу же за try
-блоком
(3) если в случае ошибки управление получает catch
-блок, то после выполнения этого блока управление передается на аварийное завершение программы
(4) допускается вложенность try
-блоков
(5) после выполнения инструкции throw
, управление передается следующему оператору
Проанализируйте приведенный код, определенный в методе Main
(доступно пространство имен System
):
double a=100;
Console.Write("Введи вещественное число:");
try { a = double.Parse(Console.ReadLine()); a=100/a; }
catch { Console.Write ("Введено неверное значение! "); }
catch (FormatException) { Console.Write ("Неверный формат! "); }
Console.WriteLine("a="+a);
Пользователь собирается запустить программу и ввести число 50
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) a=2
(3) Введено неверное значение! a=100
(4) Введено неверное значение!
(5) a=1
Приведенному ниже коду доступно пространство имен System
.
class Ex : Exception { }
static void Main()
{ int a = 0;
try { if (a == 0) throw new Ex(); else a = 100 / a; }
catch (DivideByZeroException)
{ Console.Write("Делитель = 0! "); }
catch
{ Console.Write("Неверный формат! "); }
Console.WriteLine("a=" + a);
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) Неверный формат!
(3) Делитель = 0! a=0
(4) Неверный формат! a=0
(5) Делитель = 0!
Приведенному ниже коду доступно пространство имен System
.
class ExceptA : ApplicationException { }
class ExceptB : ExceptA { }
public static void Main()
{ string a = Console.ReadLine(); string b = Console.ReadLine();
try { if (a == "end") throw new ExceptA();
else if (b == "exit") throw new ExceptB();
else throw new Exception();
}
catch (ExceptB) { Console.Write(" Исключение-1"); }
catch (ExceptA) { Console.Write(" Исключение-2"); }
catch (Exception){ Console.Write(" Исключение-3"); }
}
Пользователь собирается после запуска программы ввести end
и cont
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Исключение-1 Исключение-2
(2) Исключение-2 Исключение-3
(3) Исключение-3
(4) Исключение-2
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) модификатор (спецификатор) internal
определяет доступность класса в пределах включающей его сборки
(2) для определения доступности члена класса в других сборках необходимо указать модификатор (спецификатор) extern
(3) модификатор (спецификатор) internal
определяет доступность любого члена класса во внешних сборках
(4) модификатор (спецификатор) internal
определяет доступность любого члена класса в пределах включающей его сборки
(5) модификатор (спецификатор) internal
нельзя применять к событиям
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) если переменная описывается вне класса, то она является глобальной
(2) если метод не возвращает значение, то он должен иметь модификатор (спецификатор) abstract
(3) для вызова метода необходимо создавать экземпляр (объект) класса, если метод не является статическим или не вызывается внутри своего класса
(4) метод не обязан возвращать управление оператору, следующему после оператора вызова
(5) из тела метода можно выйти с помощью оператора goto
Исходный модуль содержит код:
protected internal class A
{ public int x = 123; }
class B : A
{
static void Main()
{
A a = new A();
int i = a.x = 10;
B b = new B();
int j = b.x = 20;
System.Console.Write("a.x={0} b.x={1}", i, j);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) a.x=20 b.x=10
(2) a.x=20 b.x=20
(3) a.x=10 b.x=20
(4) a.x=10 b.x=10
(5) программа не выполнится, так как класс A
не может иметь модификатор protected internal
Исходный модуль содержит код:
internal class Rectangle
{ public double width, hight;
public void Zoom(double d)
{ width += d; hight += d; }
public int Rectangle(double width, double hight)
{ this.width = width; this.hight = hight; return width * hight;}
}
class Program
{ static void Main()
{ Rectangle p = new Rectangle(10, 20);
p.Zoom(-5);
System.Console.Write("{0} {1}", p.width, p.hight);
} }
Метод
Main
разрабатывался для изменения размера прямоугольника.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) метод Zoom
должен вызываться как метод класса, а не метод объекта
(2) статический метод Main
не может обращаться к полям объекта
(3) конструктор не может возвращать значение
(4) тип значения, возвращаемого методом Rectangle
, должен быть double
(5) конструктор не может следовать за методами класса
Исходный модуль содержит код:
class Rectangle
{ double width=15, hight=10, s;
string t = "прямоугольник";
public Rectangle(double w, double h) { width = w; hight = h; s = w * h; }
public Rectangle(int k) { width *= k; hight *= k; s = width * hight; }
public Rectangle(double side) : this(side, side) { t = "квадрат"; }
public string RectForm() { return string.Format("{0}: площадь={1}. ", t, s); }
}
class Program
{ static void Main()
{ Rectangle k = new Rectangle(2); Rectangle t = new Rectangle(20.0);
System.Console.Write(k.RectForm() + t.RectForm());
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) прямоугольник: площадь=4. квадрат: площадь=400
(2) прямоугольник: площадь=600. прямоугольник: площадь=6000
(3) прямоугольник: площадь=600. квадрат: площадь=400
(4) программа завершится аварийно, так как третий конструктор не вычисляет площадь
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) инкапсуляция предполагает сокрытие полей класса
(2) свойство - это одна или две специальные функции, доступные для чтения и/или записи
(3) свойство - это набор параметров, характеризующих состав класса
(4) свойство не может иметь модификатор private
, так как оно не будет доступно извне
(5) свойство может быть статическим
Исходный модуль содержит код:
class A
{
private static double a;
public static double this[double i]
{ get { return System.Math.Pow(2.0, i); }
set { a = value; }
}
}
public class Test
{ public static void Main()
{
A[3] = 4; double c = A[3];
System.Console.Write(c);
}
}
Метод
Main
разрабатывался для вывода степени числа 2.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) класс А
не может состоять только из статических членов
(2) для использования индексатора должен быть создан объект класса А
(3) индексатор не может быть статическим
(4) в индексаторе не используется массив
(5) класс А
должен содержать массив для его использования в индексаторе
Исходный модуль содержит код:
class Сотрудник
{ private int id;
private float зарплата = 20000;
public Сотрудник(int i, float z) { id = i; зарплата = z; }
public float Зарплата(int номер) { return номер < id ? зарплата : -1; }
public void Зарплата(int номер, ref float зарпл)
{ if (номер < id)
{ float зрпл = зарплата;
зарплата = зарпл; зарпл = зрпл;
} } }
class Program
{ static void Main()
{ Сотрудник Иванов = new Сотрудник(12, 40000.0f);
float z = 45000.0f; Иванов.Зарплата(10, ref z);
System.Console.Write("Зарплата Иванова = " + Иванов.Зарплата(8));
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) 40000
(2) 20000
(3) 45000
(4) -1
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Программа предназначена для присвоения переменной t
класса B
значения 8 :
class A
{ public B b = null;
public A()
{ B b = new B(); }
public class B
{ static public int r;
public int t;
} }
class Test
{ public static void Main()
{ A a = new A();
___________
}
}
Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:
(1) a.B.t = 8;
(2) A.B.t = 8;
(3) a.b.t = 8;
(4) A.b.t = 8;
(5) b.t = 8;
Класс, в заголовке которого указан модификатор sealed
:
(1) допускает наследование другого класса
(2) не может быть унаследован другим классом
(3) может быть унаследован другим классом в текущей сборке
(4) может быть унаследован структурой
(5) может быть унаследован другим классом во внешней сборке
Исходный модуль содержит код:
class A
{ protected int x = 123; }
class B : A
{
static void Main()
{ A a = new A();
int i = a.x = 10;
B b = new B();
int j = b.x = 20;
System.Console.Write("a.x={0} b.x={1}", i, j);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) a.x=10 b.x=10
(3) a.x=10 b.x=20
(4) a.x=20 b.x=20
(5) программа не выполнится, так как обнаружена одна или несколько синтаксических ошибок
Исходный модуль содержит код:
class Студент
{ string фамилия="Иванов";
public string Фамилия { get { return фамилия; } }
public Студент(string ф) { фамилия = ф; }
public Студент() { }
}
class Магистр : Студент
{ int курс=4;
public int Курс { get { return курс; } }
public Магистр(string фам, int к) { this.курс = к; }
}
class Test
{ static void Main()
{ Студент Петров = new Магистр("Петров", 5);
System.Console.Write("{0} {1}", Петров.Фамилия, ((Магистр)Петров).Курс);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Иванов 4
(3) Иванов 5
(4) Петров 5
(5) программа не выполнится, так как обнаружена одна или несколько синтаксических ошибок
Исходный модуль содержит код:
using System;
class Дерево { public Дерево() { Console.Write("Дерево "); } }
class Плодовое : Дерево
{ public Плодовое() { Console.Write("Плодовое "); }
public Плодовое(string s) : this() { Console.Write(s); } }
class Яблоня : Плодовое
{ public Яблоня(string s) : base ("Лиственное ") { Console.Write("Яблоня "); } }
class Program
{ static void Main() { object P = new Яблоня("Антоновка "); } }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Дерево Плодовое Лиственное Яблоня Антоновка
(2) Дерево Плодовое Лиственное Яблоня
(3) Яблоня Лиственное Плодовое Дерево
(4) Антоновка Яблоня Лиственное Плодовое Дерево
(5) программа не выполнится, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) в производном классе должны быть переопределены все виртуальные методы базового класса
(2) если в классе есть виртуальные методы, то класс должен быть объявлен с модификатором virtual
(3) для переопределения в производном классе виртуального метода может использоваться модификатор override
(4) для переопределения в производном классе виртуального метода может использоваться модификатор new
(5) объявление метода виртуальным означает, что все ссылки на этот метод будут разрешаться во время выполнения программы
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) абстрактный класс может быть производным классом
(2) абстрактный класс не может быть базовым классом
(3) при наследовании абстрактного класса в производном классе должны быть реализованы все абстрактные методы абстрактного класса
(4) при наследовании абстрактного класса в производном классе может быть реализована часть абстрактных методов абстрактного класса
(5) если в классе есть хотя бы один абстрактный метод, то класс должен быть объявлен абстрактным
Проанализируйте приведенный код.
class Rectangle
{ public int x = 10, y = 20;
public Rectangle(int x, int y) { this.x = x; this.y = y; }
public virtual int Zoom
{ get { return x * y; } set { x += value; y += value; } }
}
class Параллепипед : Rectangle
{ public int z;
public Параллепипед(int x, int y, int z) : base(x, y) { this.z = z; }
public override int Zoom
{ get { return x*y*z; } set { x+=value; y+=value; z+=value; } }
}
class Program
{ static void Main()
{ Rectangle парал = new Параллепипед(6, 8, 10);
парал.Zoom = -5; System.Console.Write(парал.Zoom); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 3
(3) 15
(4) 375
(5) будет обнаружена синтаксическая ошибка, связанная с попыткой присвоить ссылке типа Rectangle
адрес объекта типа Параллепипед
Проанализируйте приведенный код.
abstract class Rectangle
{ public double width, hight;
public Rectangle(double width, double hight)
{ this.width = width; this.hight = hight; }
public double Zoom(double d)
{ width += d; hight += d; return width * hight; }
}
class Program
{ static void Main()
{ Rectangle rect = new Rectangle(10, 20);
rect.Zoom(-5);
System.Console.Write("{0} {1}", rect.width, rect.hight);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 5 15
(3) 10 20
(4) 15 25
(5) будет обнаружена синтаксическая ошибка, связанная с попыткой создания объекта
Проанализируйте приведенный код.
class Круг
{ protected double r = 5;
public Круг(double r) { this.r = r; }
public virtual int Фигура() { return (int)(3.14*r*r); }
}
class Цилиндр : Круг
{ double h = 10;
public Цилиндр(double r, double h) : base(r) { this.h = h; }
public override int Фигура() { return (int)(3.14*r*r*h); }
}
class Конус : Круг
{ double h = 10;
public Конус(double r, double h) : base(r) { this.h = h; }
public override int Фигура() { return (int)(3.14*r*r*h/3.0); }
}
class Program
{ static void Param(Круг fig) { System.Console.Write(fig.Фигура()+" "); }
static void Main()
{ Param(new Цилиндр(2, 1)); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 3
(3) 12
(4) 2
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
class TwoD
{ int x, у;
public TwoD() { x = у = 0; }
public TwoD(int i, int j) { x = i; у = j; }
public static bool operator true(TwoD op)
{ if ((op.x != 0) || (op.у != 0)) return true;
else return false;
}
public static bool operator false(TwoD op)
{ if ((op.x == 0) && (op.у == 0)) return true;
else return false;
}
}
class Program
{ public static void Main()
{ TwoD точка = new TwoD();
if (_______________) System.Console.Write("точка1-ИСТИНА");
else System.Console.Write("точка-ЛОЖЬ");
} }
Требуется вывести строку точка-ЛОЖЬ
. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) (точка.x == 0) & (точка.у == 0)
(2) точка=0
(3) точка
(4) (точка.x == 0) && (точка.у == 0)
(5) (точка.x == 0) || (точка.у == 0)
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) интерфейс не может иметь полей
(2) интерфейс не может объявлять сигнатуры свойств
(3) интерфейсные методы не должны иметь тела
(4) интерфейс может иметь конструктор без тела
(5) при наследовании базового класса и интерфейсов порядок следования имен класса и интерфейсов может быть произвольным
Проанализируйте приведенный код.
interface IФигура { int Периметр(); int Площадь(); }
class Квадрат : IФигура
{ int длина;
public Квадрат(int длина) { this.длина = длина;}
public int Периметр() { return 4*длина; }
int IФигура.Площадь() { return длина * длина; }
}
class Test
{ public static void Main()
{ IФигура фигура;
фигура = new Квадрат(10);
System.Console.WriteLine("Периметр={0} Площадь={1}",
фигура.Периметр(), фигура.Площадь());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Периметр=40 Площадь=100
(3) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что для вызова методов Периметр()
и Площадь()
необходимо ссылку фигура
привести к типу Квадрат
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что ссылка фигура
должна иметь тип Квадрат
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с отсутствием модификатора public
у метода Площадь()
Проанализируйте приведенный код.
interface Интерфейс { int Метод(); }
class Класс1 : Интерфейс
{ int len;
public Класс1(int l) { len = l; }
public virtual int Метод() { return len * len; }
}
class Класс2 : Класс1
{ int w, h;
public Класс2(int w1, int h1) : base (w1) { w = w1; h = h1; }
public override int Метод() { return w * h; }
}
class Test
{ public static void Main()
{ Класс2 объект1 = new Класс2(5, 10);
Интерфейс объект2 = объект1;
System.Console.WriteLine("Значение1={0} Значение2={1}",
объект1.Метод(), объект2.Метод());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Значение1=50 Значение2=25
(2) Значение1=25 Значение2=25
(3) Значение1=25 Значение2=50
(4) Значение1=50 Значение2=50
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с наличием модификатора virtual
у метода Метод
Проанализируйте приведенный код.
interface Интерфейс1 { string Метод(); }
interface Интерфейс2 { string Свойство { get;} }
class Класс1 : Интерфейс1
{ public string Метод() { return "Класс1: есть Интерфейс1 "; }
}
class Класс2 : Класс1, Интерфейс2
{ public string Метод() { return "Класс2: есть Интерфейс1 "; }
public string Свойство { get { return "Класс2: есть Интерфейс2 "; } }
}
class Test
{ static string GetValue(object ob)
{ string str = "Найден интерфейс ";
if (ob is Интерфейс1) str = ((Интерфейс1)ob).Метод();
if (ob is Интерфейс2) { str += ((Интерфейс2)ob).Свойство; }
return str;
}
public static void Main()
{ Интерфейс1 объект1 = new Класс2();
System.Console.WriteLine(GetValue(объект1));
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Класс1: есть Интерфейс1 Класс2: есть Интерфейс2
(2) Класс2: есть Интерфейс1. Класс2: есть Интерфейс2.
(3) Класс2: есть Интерфейс2.
(4) Найден интерфейс
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что посредством интерфейсной ссылки объект1
типа Интерфейс1
нельзя вызвать Свойство
, определенное в Интерфейс2
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) структура может наследовать интерфейсы
(2) структура не может наследовать интерфейсы
(3) перечисление может состоять из элементов строкового типа
(4) структура имеет конструктор по умолчанию, который инициализирует поля значениями по умолчанию
(5) поля структуры не инициализируются значениями по умолчанию
Проанализируйте приведенный код.
public enum Языки { СSarp, CPP, VB, Java }
struct Структура
{ public string Имя;
public Языки я;
public override string ToString()
{ return string.Format("Программист {0} программирует на {1}", Имя, я); }
}
class Test
{ public static void Main()
{
Структура c1 = new Структура();
Структура c2;
c1.Имя = "Иванов"; c1.я = Языки.VB;
c2 = c1;
c2.Имя = "Петров"; c1.я = Языки.Java;
System.Console.WriteLine(c2);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Программист Петров программирует на Java
(2) Программист Иванов программирует на VB
(3) Программист Иванов программирует на Java
(4) Программист Петров программирует на VB
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура C2
не создана оператором new
Проанализируйте приведенный код.
struct Структура2
{ public string имя;
public Структура2(string и) { имя = и; }
}
struct Структура : Структура2
{ public int курс;
public Структура(string и, int к) : base (и) { курс = к; }
public string Метод()
{ return string.Format("Студент {0} учится на курсе {1}", имя, курс); }
}
class Test
{ public static void Main()
{ Структура c2 = new Структура();
Структура c1 = new Структура("Зайцева",1); c1 = c2;
System.Console.WriteLine(c1.Метод());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Студент Зайцева учится на курсе 1
(2) Студент учится на курсе 0
(3) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура не может наследовать другую структуру
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что наследуемая структура не должна определять конструктор
Проанализируйте приведенный код.
class Вуз { public string название;
public Вуз(string н) { название = н; } }
class Student { private string фамилия; private Вуз вуз;
public Student(string фам, Вуз уз)
{ фамилия = фам; вуз = уз; }
public override string ToString()
{ return string.Format("{0} учится в {1}" ,фамилия, вуз.название) ; } }
class Program
{ static void Main(string[] args)
{ Student[] студенты = new Student[2];
Вуз вуз1 = new Вуз("МГУ");
Вуз вуз2 = new Вуз("ГУ-ВШЭ"); вуз1 = вуз2;
студенты[0] = new Student("Иванов", вуз1);
студенты[1] = new Student("Петров", вуз2);
System.Console.WriteLine(студенты[0]);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Иванов учится в МГУ
(3) Иванов учится в ГУ-ВШЭ
(4) Петров учится в ГУ-ВШЭ
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
struct Auto { public string марка;
public Auto(string m) { марка = m; }
}
class Водитель
{ private string фамилия; private Auto марка;
public Водитель(string фам, Auto м) { фамилия = фам; марка = м; }
public override string ToString()
{ return string.Format("{0}у нравится {1}",фамилия, марка.марка) ; }
}
class Program
{ static void Main(string[] args)
{ Водитель[] водители = new Водитель[2];
Auto auto1 = new Auto("Мерседес");
Auto auto2 = new Auto("Тойота");
водители[0] = new Водитель("Иванов", auto1);
водители[1] = new Водитель("Петров", auto2); auto2.марка = "Форд";
System.Console.WriteLine(водители[1]);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Петрову нравится Тойота
(2) Иванову нравится Мерседес
(3) Петрову нравится Форд
(4) программа завершится аварийно
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) для работы с коллекцией класса Queue
можно использовать индексатор
(2) удаление элементов из коллекции класса Stack
осуществляется по принципу "последним пришел - первым обслужен"
(3) коллекции являются динамическими, потому что они хранятся в динамической памяти
(4) распаковка объектов - это процесс восстановления исходного вида объекта, выполняемый после операции его сжатия (архивирования)
(5) если извлекаемый из коллекции ArrayList
объект имеет тип, отличный от System.Object
, то необходимо его принудительное преобразование в исходный тип
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{ ArrayList al = new ArrayList();
al.Add("Иванов");
al.Add("Петров");
al.Add(3.1415f);
al.Add("Ларин");
for (int i = 0; i < al.Count; i++)
Console.Write(al[i] + " ");
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно, так как вместо фамилии в коллекцию делается попытка добавить число
(3) Иванов Петров Ларин
(4) Иванов Петров 3,1415 Ларин
(5) Иванов Петров
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{ Hashtable ht = new Hashtable();
ht.Add("ВУЗ", "МГУ");
ht.Add("Птица", "чиж");
ht.Add("Ветер", "пассат");
ht.Sort();
foreach (string str in ht.Keys)
Console.Write(str + ": " + ht[str] + ". ");
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) ВУЗ: МГУ. Ветер: пассат. Птица: чиж.
(3) ВУЗ: МГУ. Птица: чиж. Ветер: пассат.
(4) Ветер: пассат. ВУЗ: МГУ. Птица: чиж.
(5) программа завершится аварийно в цикле foreach
Проанализируйте приведенный код.
public static void Main()
{
System.Collections.Queue q = new System.Collections.Queue();
q.Enqueue(11);
q.Enqueue(22);
q.Enqueue(33);
___________________
q.Enqueue(44);
foreach (int i in q) System.Console.Write(i + " ");
}
Требуется вывести числа 11 22 33 44
. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) Queue.Peek();
(2) q.Peek();
(3) q.Dequeue();
(4) int a=(int)q[0];
(5) int a=(int)q.Dequeue();
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) делегат не может вызывать статический метод
(2) с помощью одного делегата, можно вызывать методы с разным типом возвращаемого значения
(3) вызов экземпляра делегата на выполнение трансформируется в передачу управления методу, связанному с этим экземпляром
(4) делегат можно объявить в любом месте, где может быть помещен какой-либо класс.
(5) делегаты безопасны в отношении типов
В классе Test
определен приведенный ниже код:
delegate string strMod(string str);
public static string ReplaceSpaces(string a) { return a.Replace(' ', '-'); }
public string ReplaceHyphens (string a) { return a.Replace('-', '*'); }
public static void Main()
{ string str = System.Console.ReadLine();
strMod strOp = new strMod(Test.ReplaceSpaces);
str = strOp(str);
strOp = new strMod(new Test().ReplaceHyphens);
str = strOp(str);
System.Console.WriteLine(strOp(str));
}
Пользователь собирается после запуска программы ввести фразу ОЧЕНЬ ПРОСТОЙ ТЕСТ
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно
(3) ОЧЕНЬ ПРОСТОЙ ТЕСТ
(4) ОЧЕНЬ*ПРОСТОЙ*ТЕСТ
(5) ОЧЕНЬ-ПРОСТОЙ-ТЕСТ
В классе Test
определен приведенный ниже код:
public delegate int CallBackMethod(int a1, int a2);
public static void Main()
{ int s = 0;
s = CallMethod(new CallBackMethod(CBMethod));
System.Console.WriteLine(s);
}
public static int CallMethod(CallBackMethod cbMethod)
{ return cbMethod(11, 22); }
public static int CBMethod(int a1, int a2)
{ return a1 + a2; }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно
(3) 0;
(4) Test.CallMethod
(5) 33
Проанализируйте приведенный код.
delegate void MyEventHandler(ref int a);
class MyEvent
{ public event MyEventHandler SomeEvent;
public void OnSomeEvent(ref int d)
{ if (SomeEvent != null) SomeEvent(ref d); } }
class EventTest
{ static void Handler1(ref int b) { b = 2 * b; }
static void Handler2(ref int c) { c = c + 12; Handler1(ref c);}
public static void Main()
{ MyEvent evt = new MyEvent();
int a = int.Parse(System.Console.ReadLine());
if (a > 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler1);
else if (a < 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler2);
evt.OnSomeEvent(ref a); System.Console.WriteLine(a);
} }
Пользователь собирается после запуска программы ввести число -5
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) 7
(2) 14
(3) -5
(4) программа завершится аварийно
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) обработчик исключений - это объект класса, получающий управление в случае обнаружения определенной ошибки
(2) за try
-блоком может следовать другой try
-блок
(3) если в случае ошибки управление получает catch
-блок, не содержащий оператора goto
, то после выполнения этого блока управление передается на следующий за блоком оператор
(4) try
-блоки могут пересекаться
(5) после выполнения инструкции throw
, управление передается в CLR
Проанализируйте приведенный код, определенный в методе Main
(доступно пространство имен System
):
double a=15;
Console.Write("Введи вещественное число:");
try
{ a = double.Parse(Console.ReadLine()); a=100/a; }
catch (FormatException)
{ Console.Write ("Неверный формат! "); }
catch
{ Console.Write ("Введено неверное значение! "); }
Console.WriteLine("a="+a);
Пользователь собирается после запуска программы ввести символы 0F
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) Неверный формат! a=0F
(3) Неверный формат! a=15
(4) Неверный формат!
(5) Введено неверное значение!
Приведенному ниже коду доступно пространство имен System
.
class Ex : Exception { }
static void Main()
{ int a = 0;
try { a = Devide(a); }
catch { Console.Write(" Ошибка в данных! "); }
Console.WriteLine(" a=" + a);
}
static int Devide(int b)
{ try { if (b == 0) throw new Ex(); else b = 100 / b; }
catch (DivideByZeroException) { Console.Write("Делитель = 0! "); }
catch { Console.Write("Неверный формат! "); throw; }
Console.WriteLine("b=" + b);
return b;
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Делитель = 0! a=0
(2) Неверный формат! b=0 Ошибка в данных! a=0
(3) Неверный формат! Ошибка в данных! a=0
(4) Неверный формат! b=0 a=0
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Приведенному ниже коду доступно пространство имен System
.
class ExceptA : ApplicationException { }
class ExceptB : ExceptA { }
public static void Main()
{ string a = Console.ReadLine(); string b = Console.ReadLine();
try { if (a == "end") throw new ExceptA();
else if (b == "exit") throw new ExceptB();
else throw new Exception();
}
catch (ExceptB) { Console.Write(" Исключение-1"); }
catch (ExceptA) { Console.Write(" Исключение-2"); }
catch (Exception){ Console.Write(" Исключение-3"); }
}
Пользователь собирается запустить программу и ввести cont
и exit
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Исключение-1 Исключение-2
(2) Исключение-1 Исключение-3
(3) Исключение-1
(4) Исключение-3
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) модификатор (спецификатор) protected internal
определяет доступность вложенного класса любому коду включающей его сборки или коду производных классов в любых сборках
(2) модификатор (спецификатор) protected internal
определяет, где доступен не вложенный тип
(3) модификатор (спецификатор) protected internal
определяет доступность любого члена класса в производных классах любой сборки или в коде включающей его сборки
(4) модификатор (спецификатор) protected internal
определяет доступность любого члена класса любому коду включающей его сборки или коду производных классов в любых сборках
(5) модификатор (спецификатор) protected internal
определяет доступность любого члена класса только коду производных классов внешних сборок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) если метод описывается вне класса, то этот метод становится доступным из любого кода сборки
(2) члены класса с модификатором (спецификатором) private
недоступны методам этого же класса
(3) для вызова метода можно не создавать экземпляр (объект) класса только в том случае, если метод является статическим или метод вызывается внутри класса
(4) метод, не возвращающий значение, должен вызываться отдельным оператором (не входящим в состав выражения)
(5) метод, возвращающий значение, должен входить в состав выражения
Исходный модуль содержит код:
protected class A
{ int x = 123; }
class B : A
{ static void Main()
{ A a = new A();
int i = a.x = 10;
B b = new B();
int j = b.x = 20;
System.Console.Write("a.x={0} b.x={1}", i, j);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) a.x=20 b.x=20
(3) a.x=10 b.x=20
(4) a.x=10 b.x=10
(5) программа не выполнится, так как класс A
не может иметь модификатор protected
Исходный модуль содержит код:
class Rectangle
{ public double width, hight;
public Rectangle() { width = 40; hight = 80; }
static Rectangle() { width = 100; hight = 200; }
public void Zoom(double d) { width += d; hight += d; }
}
class Program
{ static void Main()
{ Rectangle p;
p = new Rectangle();
p = new Rectangle();
p.Zoom(15);
System.Console.Write("{0} {1}", p.width, p.hight);
}
}
Метод
Main
разрабатывался для изменения размера прямоугольника.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) статический конструктор в классе Rectangle
не может использовать нестатические поля
(2) в классе Rectangle
не могут быть одновременно определены статический и нестатический конструкторы с одинаковой сигнатурой
(3) у нестатического конструктора в классе Rectangle
отсутствует модификатор (спецификатор) доступа public
(4) тип значения, возвращаемого конструктором Rectangle
, должен быть void
(5) в методе Main
предпринята попытка создать объект дважды
Исходный модуль содержит код:
class Rectangle
{ double width=0.0, hight=0.0, s=0.0;
string t = "Прямоугольник";
public Rectangle(double w, double h) { width = w; hight = h; s = w * h; }
public Rectangle(double side) : this(side, side) { t = "Квадрат"; }
public Rectangle() : this(1.0, 1.0) { t = "Точка"; }
public string RectForm() { return string.Format("{0}: площадь={1} ", t, s); }
}
class Program
{ static void Main()
{ Rectangle k = new Rectangle(10); Rectangle t = new Rectangle();
System.Console.Write(k.RectForm() + t.RectForm());
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) квадрат: площадь=0; точка: площадь=1
(2) квадрат: площадь=0; точка: площадь=0
(3) квадрат: площадь=100; точка: площадь=1
(4) программа завершится аварийно, так как вызываемые конструкторы не вычисляют площадь
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) индексатор не может быть статическим
(2) индекс, используемый в качестве параметра индексатора, должен быть числом
(3) индексатор может быть создан только в случае наличия у класса скрытого массива
(4) индексатор не может иметь модификатор private
, так как оно не будет доступно извне
(5) индексатор - это одна или две специальные функции, доступные для чтения и/или записи и получающие в качестве параметров один или несколько индексов
Исходный модуль содержит код:
class A
{
private static int b;
public static int B
{ get { return b * b; } set { b = value; } }
}
public class Test
{
public static void Main()
{
A a = new A();
a.B = 5;
System.Console.Write(a.B);
}
}
Метод
Main
разрабатывался для вывода квадрата числа 5.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) свойство B
не может быть статическим
(2) класс А
не может состоять только из статических членов
(3) значение поля b
не определено
(4) для создания объекта класс А
должен содержать конструктор
(5) свойство B
не может быть доступно через ссылку на объект класса
Сборка Assembly2.cs, приведенная ниже:
public class Test3
{ static void Main()
{ ClassUser user = new ClassUser ();
int count = ClassUser. count = 112;
System.Console.Write ("count=" + count);
}
}
ссылается на подключенную сборку Assembly1.cs, которая имеет следующий код:
public class ClassUser
{ internal static int count = 10; }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) count=10
(2) программа не выполнится, так как сборка Assembly2.cs создает объект user
, в то время как класс ClassUser
не принадлежит сборке Assembly2.cs
(3) будет выдано сообщение об ошибке компиляции, так как нельзя работать с недоступным в соответствии с модификатором полем count
(4) count=112
(5) будет выдано сообщение об ошибке компиляции, так как нельзя создать объект класса ClassUser
, содержащего недоступное в соответствии с модификатором поле count
Программа предназначена для присвоения переменной t
класса B
значения 8 :
class A
{ static public B b = null;
public A()
{ B b = new B(); }
public class B
{ static public int r;
public int t;
} }
class Test
{ public static void Main()
{ A a = new A();
___________
}
}
Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:
(1) a.B.t = 8;
(2) A.B.t = 8;
(3) a.b.t = 8;
(4) A.b.t = 4;
(5) B.t = 8;
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) System.Object
- это статический объект класса System
(2) System.Object
- это класс, являющийся базовым для всех остальных классов
(3) базовый класс должен иметь конструктор без параметров, если в производном классе определен конструктор с параметрами и без ключевого слова base
(4) производный класс не накладывает каких-либо требований на состав конструкторов базового класса
(5) если в производном классе нет явно определенных конструкторов, то в базовом классе должен быть конструктор без параметров
Исходный модуль содержит код:
sealed class A
{ public int x = 123; }
class B : A
{ static void Main()
{
A a = new A();
int i = a.x = 10;
B b = new B();
int j = b.x = 20;
System.Console.Write("a.x={0} b.x={1}", i, j);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) a.x=10 b.x=10
(3) a.x=10 b.x=20
(4) a.x=20 b.x=20
(5) программа не выполнится, так как обнаружена одна или несколько синтаксических ошибок
Исходный модуль содержит код:
сlass Студент
{ string фамилия = "Петров";
public string Фамилия { get { return фамилия; } }
public Студент(string ф) { фамилия = ф; }
public Студент() { фамилия = "Иванов"; }
}
class Магистр : Студент
{ static int курс;
public static int Курс { get { return курс; } }
static Магистр() { курс = 4; }
}
class Test
{ static void Main()
{ Студент стд = new Студент("Сидоров");
Магистр маг = new Магистр();
System.Console.Write("{0} {1}", маг.Фамилия, Магистр.Курс);
}
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Петров 4
(3) Сидоров 4
(4) Иванов 4
(5) программа не выполнится, так как обнаружена одна или несколько синтаксических ошибок
Исходный модуль содержит код:
using System;
class Дерево { public Дерево() { Console.Write("Дерево "); } }
class Плодовое : Дерево
{ public Плодовое() { Console.Write("Плодовое "); } }
class Яблоня : Плодовое
{ public Яблоня() { Console.Write("Яблоня "); }
public Яблоня(string s) : this() { Console.Write(s); }
}
class Program
{ static void Main() { object P = new Яблоня("Антоновка "); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Антоновка Плодовое Дерево
(2) Дерево Плодовое Яблоня Антоновка
(3) Антоновка Яблоня Плодовое Дерево
(4) Дерево Плодовое Антоновка
(5) программа не выполнится, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) переопределенный виртуальный метод должен обладать таким же набором параметров, как и одноименный метод базового класса
(2) виртуальный метод может быть статическим
(3) виртуальный метод может иметь модификатор abstract
(4) какая версия виртуального метода будет вызвана, определяется по типу объекта, на который указывает ссылка, имеющая тип базового класса
(5) свойства и индексаторы могут быть виртуальными
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) абстрактный класс может содержать открытые поля
(2) абстрактный класс не должен содержать открытые поля
(3) абстрактный класс должен содержать хотя бы один абстрактный метод
(4) если производный класс, являющийся наследником абстрактного класса, не переопределяет все абстрактные методы, то он должен быть помечен модификатором abstract
(5) абстрактный метод может иметь пустое тело
Проанализируйте приведенный код.
class Rectangle
{ public int x = 10, y = 20;
public Rectangle(int x, int y) { this.x = x; this.y = y; }
public virtual int Zoom
{ get { return x * y; } set { x += value; y += value; } }
}
class Параллепипед : Rectangle
{ public int z;
public Параллепипед(int x, int y, int z) : base(x, y) { this.z = z; }
public override int Zoom
{ get { return x*y*z; } set { x+=value; y+=value; z+=value; } }
}
class Program
{ static void Main()
{ Rectangle парал = new Rectangle (6, 8, 10);
парал.Zoom = -5; System.Console.Write(парал.Zoom); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 3
(3) 15
(4) 375
(5) будет обнаружена синтаксическая ошибка, связанная с попыткой вызова виртуального свойства, переопределенного в другом классе
Проанализируйте приведенный код.
abstract class Rectangle
{ public double x=10, y=20;
public Rectangle(double x, double y) { this.x = x; this.y = y; }
abstract public int Zoom(int d);
public double Zoom(double d) { x += d; y += d; return x * y; }
}
class Параллепипед : Rectangle
{ public double z;
public Параллепипед(double x, double y, double z) : base (x, y) { this.z = z; }
}
class Program
{ static void Main()
{ Параллепипед парал = new Параллепипед(6, 8, 10);
парал.Zoom(-5);
System.Console.Write("{0} {1} {2}", парал.x, парал.y, парал.z);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 1 3 5
(3) 1 3 10
(4) 5 15 10
(5) будет обнаружена синтаксическая ошибка, связанная с тем, что класс Параллепипед
не переопределяет абстрактный метод Zoom
Проанализируйте приведенный код.
class Круг
{ protected double r = 5;
public Круг(double r) { this.r = r; }
public virtual int Фигура() { return (int)(3.14*r*r); }
}
class Цилиндр : Круг
{ double h = 10;
public Цилиндр(double r, double h) : base(r) { this.h = h; }
public override int Фигура() { return (int)(3.14*r*r*h); }
}
class Конус : Круг
{ double h = 10;
public Конус(double r, double h) : base(r) { this.h = h; }
public override int Фигура() { return (int)(3.14*r*r*h/3.0); }
}
class Program
{ static void Param(Круг fig) { System.Console.Write(fig.Фигура()+" "); }
static void Main()
{ Param(new Конус(1, 2)); }
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) 3
(3) 12
(4) 2
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
class TwoD
{ int x, у;
public TwoD() { x = у = 0; }
public TwoD(int i, int j) { x = i; у = j; }
public static bool operator true(TwoD op)
{ if ((op.x != 0) || (op.у != 0)) return true;
else return false;
}
}
class Program
{ public static void Main()
{ TwoD точка = new TwoD(5, 6);
if (_______________) System.Console.Write("точка1-ИСТИНА");
else System.Console.Write("точка-ЛОЖЬ");
} }
Требуется вывести строку точка-ИСТИНА
. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) (точка.x != 0) | (точка.у != 0)
(2) точка>0
(3) точка
(4) (точка.x != 0) || (точка.у != 0)
(5) (точка.x != 0) && (точка.у != 0)
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) интерфейс не может определять конструкторов
(2) интерфейс может объявлять сигнатуры индексаторов
(3) любой член интерфейса может быть объявлен статическим
(4) интерфейсные методы должны быть объявлены с модификатором public
(5) при наследовании базового класса и интерфейсов первым в заголовке производного класса должно следовать имя базового класса, а затем имена интерфейсов
Проанализируйте приведенный код.
interface IФигура { int Периметр(); int Площадь(); }
class Квадрат : IФигура
{
int длина;
public Квадрат(int длина) { this.длина = длина; }
public int Периметр() { return 4 * длина; }
int IФигура.Площадь() { return длина * длина; }
}
class Test
{ public static void Main()
{ Квадрат фигура = new Квадрат(10);
System.Console.WriteLine("Периметр={0} Площадь={1}",
фигура.Периметр(), фигура.Площадь());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Периметр=40 Площадь=100
(3) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что перед именем метода Площадь()
не может быть указано имя интерфейса
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что для вызова метода Квадрат()
ссылка фигура
должна иметь тип IФигура
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с отсутствием модификатора public
у метода Площадь()
Проанализируйте приведенный код.
interface Интерфейс { int Метод(); }
class Класс1 : Интерфейс
{ int len;
public Класс1(int l) { len = l; }
public int Метод() { return len * len; }
}
class Класс2 : Класс1, Интерфейс
{ int w, h;
public Класс2(int w1, int h1) : base(w1) { w = w1; h = h1; }
public int Метод() { return w * h; }
}
class Test
{ public static void Main()
{ Класс2 объект1 = new Класс2(5, 10);
Интерфейс объект2 = объект1;
System.Console.WriteLine("Значение1={0} Значение2={1}",
объект1.Метод(), объект2.Метод());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Значение1=50 Значение2=25
(2) Значение1=25 Значение2=25
(3) Значение1=50 Значение2=50
(4) Значение1=25 Значение2=50
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с повторным наследованием интерфейса Интерфейс
Проанализируйте приведенный код.
interface Интерфейс1 { string Метод(); }
interface Интерфейс2 { string Свойство { get;} }
class Класс1 : Интерфейс1
{ public string Метод() { return "Класс1: есть Интерфейс1 "; }
}
class Класс2 : Интерфейс1, Интерфейс2
{ public string Метод() { return "Класс2: есть Интерфейс1 "; }
public string Свойство { get { return "Класс2: есть Интерфейс2 "; } }
}
class Test
{ static string GetValue(object ob)
{ string str = "Найден интерфейс ";
if (ob is Интерфейс1) str = ((Интерфейс1)ob).Метод();
if (ob is Интерфейс2) { str += ((Интерфейс2)ob).Свойство; }
return str;
}
public static void Main()
{ Интерфейс1 объект1 = new Класс2();
System.Console.WriteLine(GetValue(объект1));
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Класс2: есть Интерфейс1.
(2) Класс2: есть Интерфейс1. Класс2: есть Интерфейс2.
(3) Класс2: есть Интерфейс2.
(4) Найден интерфейс
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что посредством интерфейсной ссылки объект1
типа Интерфейс1
нельзя вызвать Свойство
, определенное в Интерфейс2
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) в структуре можно определить конструктор по умолчанию
(2) в структуре нельзя определить конструктор по умолчанию
(3) перечисление состоит из элементов целочисленного типа
(4) класс может наследовать структуру
(5) структура может быть объявлена с модификатором protected
Проанализируйте приведенный код.
public enum Языки { СSarp, CPP, VB, Java }
struct Структура
{ public string Имя;
public Языки я;
public override string ToString()
{ return string.Format("Программист {0} программирует на {1}", Имя, я); }
}
class Test
{ public static void Main()
{
Структура c1;
Структура c2 = new Структура();
c1 = c2;
c1.Имя = "Иванов"; c1.я = Языки.VB;
System.Console.WriteLine(c2);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Программист программирует на
(2) Программист программирует на СSarp
(3) Программист Иванов программирует на Java
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура C1
не создана оператором new
Проанализируйте приведенный код.
struct Структура
{ public string имя = "Без имени";
static public int курс=1;
public Структура(string и) { имя=и; }
public string Метод()
{ return string.Format("Студент {0} учится на курсе {1}", имя, курс); }
}
class Test
{ public static void Main()
{ Структура c2 = new Структура();
Структура c1 = new Структура("Зайцев"); c2 = c1;
System.Console.WriteLine(c2.Метод());
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Студент Зайцев учится на курсе 2
(2) Студент Зайцев учится на курсе 0
(3) Студент учится на курсе 0
(4) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что нестатические поля не могут инициализироваться в структуре
(5) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что структура не может иметь статические поля
Проанализируйте приведенный код.
class Вуз { public string название;
public Вуз(string н) { название = н; } }
class Student { private string фамилия; private Вуз вуз;
public Student(string фам, Вуз уз)
{ фамилия = фам; вуз = уз; }
public override string ToString()
{ return string.Format("{0} учится в {1}", фамилия, вуз.название) ; } }
class Program
{ static void Main(string[] args)
{ Student[] студенты = new Student[2];
Вуз вуз1 = new Вуз("МГУ");
Вуз вуз2 = new Вуз("ГУ-ВШЭ"); вуз1 = вуз2;
студенты[0] = new Student("Иванов", вуз1);
студенты[1] = new Student("Петров", вуз1);
System.Console.WriteLine(студенты[1]);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа завершится аварийно
(2) Петров учится в МГУ
(3) Иванов учится в ГУ-ВШЭ
(4) Петров учится в ГУ-ВШЭ
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Проанализируйте приведенный код.
struct Auto { public string марка;
public Auto(string m) { марка = m; }
}
class Водитель
{ private string фамилия; private Auto марка;
public Водитель(string фам, Auto м) { фамилия = фам; марка = м; }
public override string ToString()
{ return string.Format("{0} имеет {1}",фамилия, марка.марка) ; }
}
class Program
{ static void Main(string[] args)
{ Водитель[] водители = new Водитель[2];
Auto auto1 = new Auto("Мерседес");
Auto auto2 = new Auto("Тойота"); auto2 = auto1;
водители[0] = new Водитель("Иванов", auto1);
водители[1] = new Водитель("Петров", auto2);
System.Console.WriteLine(водители[1]);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Иванов имеет Мерседес
(2) Петров имеет Мерседес
(3) Петров имеет Форд
(4) программа завершится аварийно
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) удаление элементов из коллекции SortedList
осуществляется по принципу "первым пришел - первым обслужен"
(2) удаление элементов из коллекции Queue
осуществляется по принципу "последним пришел - первым обслужен"
(3) если коллекция наследует интерфейс IList
, то с коллекцией можно работать, используя индексатор
(4) коллекция класса BitArray
хранит последовательность байтов (со значениями ноль или один), каждый из которых рассматривается как соответствующий бит с тем же значением
(5) все объекты, записываемые в коллекцию, автоматически приводятся к типу System.Object
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{ ArrayList al = new ArrayList();
al.Add("Иванов");
al.Add("Петров");
al.Add(3.1415f);
al.Add("Ларин");
foreach (object str in al) Console.Write(str + " ");
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно в момент добавления в коллекцию числа вместо фамилии
(3) Иванов Петров 3,1415 Ларин
(4) Иванов Петров Ларин
(5) программа завершится аварийно в цикле foreach
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{
Queue q = new Queue();
q.Enqueue(11);
q.Enqueue(22);
q.Enqueue(33);
q.Dequeue();
q.Enqueue(44);
Console.WriteLine("{0} {1} {2}", q[0], q[1], q[2] );
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) 11 22 33 44
(2) 11 22 44
(3) 22 33 44
(4) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(5) программа завершится аварийно, так как извлекаемое из коллекции число не присваивается переменной
Приведенному ниже коду доступны пространства имен System
и System.Collections
.
public static void Main()
{
Hashtable ht = new Hashtable();
ht.Add("ВУЗ", "МГУ");
ht.Add("Птица", "чиж");
ht.Add("Ветер", "пассат");
Console.Write("{0} - это птица",_______________);
}
Требуется вывести строку чиж - это птица
. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) ht[2]
(2) ht.Keys[1]
(3) ht[1]
(4) ht.Keys["Птица"]
(5) ht["Птица"]
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) с помощью одного делегата, можно вызывать любые доступные методы, имеющие такую же сигнатуру, включая тип возвращаемого значения
(2) создание экземпляра делегата связано с передачей конструктору имени метода
(3) у делегата может быть любой модификатор доступа
(4) делегат может вызывать только объектные методы
(5) экземпляр делегата не может быть статическим
В классе Test
определен приведенный ниже код:
delegate string strMod(string str, char ch);
public static string ReplaceSpaces(string a) { return a.Replace(' ', '-'); }
public string ReplaceHyphens(string a, char b) { return a.Replace('-', b); }
public static void Main()
{
strMod strOp = new strMod(Test.ReplaceSpaces);
string str = strOp("очень простой тест ");
strOp = new strMod(new Test().ReplaceHyphens);
System.Console.WriteLine(strOp(str, '*'));
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно
(3) очень простой тест
(4) очень*простой*тест
(5) очень-простой-тест
В классе Test
определен приведенный ниже код:
public delegate int CallBackMethod(int a1, int a2);
public static void Main()
{ int s = 0;
if (System.Console.ReadLine() == "1")
s = CallMethod(new CallBackMethod(CBMethod1));
else s = CallMethod(new CallBackMethod(CBMethod2));
System.Console.WriteLine(s);
}
public static int CallMethod(CallBackMethod cbMethod)
{ return cbMethod(33, 22); }
public static int CBMethod1(int a1, int a2) { return a1 + a2; }
public static int CBMethod2(int a1, int a2) { return a1 - a2; }
Пользователь собирается после запуска программы ввести цифру 2
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) программа завершится аварийно
(3) 11;
(4) Test.CallMethod
(5) 55
Проанализируйте приведенный код.
delegate void MyEventHandler(ref int a);
class MyEvent
{ public event MyEventHandler SomeEvent;
public void OnSomeEvent(ref int d)
{ if (SomeEvent != null) SomeEvent(ref d); } }
class EventTest
{ static void Handler1(ref int b) { b = 2 * b; }
static void Handler2(ref int c) { c = c + 12; Handler1(ref c);}
public static void Main()
{ MyEvent evt = new MyEvent();
int a = int.Parse(System.Console.ReadLine());
if (a > 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler1);
else if (a < 0) evt.SomeEvent += new MyEventHandler(EventTest.Handler2);
evt.OnSomeEvent(ref a); System.Console.WriteLine(a); } }
Пользователь собирается после запуска программы ввести цифру 0
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) 0
(2) 24
(3) 12
(4) программа завершится аварийно
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) обработчик исключений - это блок кода, получающий управление в случае обнаружения соответствующей ему ошибки
(2) между try
-блоком и catch
-блоком могут находиться операторы
(3) если в случае ошибки управление получает catch
-блок, то после выполнения этого блока управление передается на следующий за ним catch
-блок, а если такового нет, то на завершение программы
(4) блок finally
выполняется только в случае, если было сгенерировано исключение
(5) для повторного генерирования исключения используется инструкция throw
Проанализируйте приведенный код, определенный в методе Main
(доступно пространство имен System
):
int a = 100;
Console.Write("Введи целое число:");
try
{ a = int.Parse(Console.ReadLine()); a = 100 / a; }
catch (FormatException)
{ Console.Write("Неверный формат! "); }
catch
{ Console.Write("Введено неверное значение! "); }
Console.WriteLine("a=" + a);
Пользователь собирается запустить программу и ввести число 0
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
(2) Неверный формат! a=0
(3) Неверный формат! a=100
(4) Неверный формат!
(5) Введено неверное значение! a=0
Проанализируйте приведенный код.
static void Main()
{ int a = 0;
try { a = Devide(a); }
catch (System.SystemException)
{ System.Console.Write(" Ошибка в данных! "); }
finally { System.Console.Write(" Программа завершена!"); }
System.Console.Write(" a=" + a);
}
static int Devide(int b)
{ if (b == 0) throw new System.FormatException(); else b = 100 / b;
return b;
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Программа завершена! a=0
(2) Ошибка в данных! Программа завершена!
(3) Ошибка в данных! Программа завершена! a=0
(4) Ошибка в данных!
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Приведенному ниже коду доступно пространство имен System
.
class ExceptA : ApplicationException { }
class ExceptB : ExceptA { }
public static void Main()
{ string a = Console.ReadLine(); string b = Console.ReadLine();
try { if (a == "end") throw new ExceptA();
else if (b == "exit") throw new ExceptB();
else throw new Exception();
}
catch (ExceptB) { Console.Write(" Исключение-1"); }
catch (ExceptA) { Console.Write(" Исключение-2"); }
catch (Exception){ Console.Write(" Исключение-3"); }
}
Пользователь собирается после запуска программы ввести no
и yes
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Исключение-3
(2) Исключение-1 Исключение-2 Исключение-3
(3) Исключение-1 Исключение-3
(4) вывод будет отсутствовать
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Определяемый программистом тип может быть
(1) классом
(2) одномерным массивом
(3) делегатом
(4) строкой символов
(5) событием
В заголовке определяемого не вложенного типа программист может указать доступность типа с помощью модификатора:
(1) internal
(2) protected
(3) private
(4) static
(5) abstract
Исходный модуль содержит код:
internal class Point
{
public double x,y; //координаты точки
public Point(double x, double y) { this.x = x; this.y = y; }
public void Move(double d){ x+=d; y+=d;}
}
class Program
{
static void Main()
{
Point p = new Point();
p.Move(2);
System.Console.Write("{0} {1}",p.x, p.y);
}
}
Метод
Main
разрабатывался для перемещения точки по обеим координатам на 2.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) значение полей x
и y
не определено
(2) статический метод Main
не может обращаться к полям объекта
(3) тип Point
не доступен из класса Program
(4) поля x
и y
не доступны из класса Program
(5) в классе Point
не определен конструктор без параметров
Исходный модуль содержит код классов MyMessage
и Program
.
class MyMessage
{
private static string msg = "Назад!";
public MyMessage(string s) { msg = s; }
public MyMessage() { }
public string Msg() { return msg; }
}
В классе Program
определен метод Main
, в теле которого находится код:
MyMessage m1 = new MyMessage("Ура!");
MyMessage m2 = new MyMessage("Вперед!");
MyMessage m3 = new MyMessage();
System.Console.Write(m1.Msg() + m2.Msg() + m3.Msg());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) Ура!Вперед!Назад!
(2) Ура!Вперед!
(3) Вперед! Вперед! Вперед!
(4) Назад! Назад! Назад!
Программа предназначена для вывода на консоль строки СИДОРОВ
:
namespace Message
{
class MyPrint{ public static string View(){return "КОЗЛОВ";}}
}
namespace OutPut
{
class MyPrint { public static string View(){return "СИДОРОВ";}}
}
class Program
{
static void Main(string[] args)
{ System.Console.Write( _____________ ); }
}
Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:
(1) OutPut.View()
(2) MyPrint.View()::OutPut
(3) OutPut.MyPrint.View()
(4) OutPut::MyPrint.View()
(5) this.MyPrint.View()
Доступность метода из других классов может быть указана с помощью модификатора:
(1) sealed
(2) protected
(3) private
(4) partial
(5) abstract
Исходный модуль содержит код:
class MyOut
{
public int A = 555;
int B;
public int View() { return A + B; }
}
class Program
{
static void Main()
{
MyOut mout = new MyOut();
System.Console.Write(mout.A + mout.B);
}
}
Метод
Main
разрабатывался для получения суммы полей
A
и
B
объекта класса
MyOut
.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) значение поля B
не определено
(2) статический метод Main
не может обращаться к полям объекта
(3) поле B
закрыто для доступа из других классов
(4) тип MyOut
не доступен из класса Program
(5) в классе MyOut
не определен конструктор без параметров
Исходный модуль содержит код:
class Сотрудник
{
private int id;
private float зарплата;
public Сотрудник(int i, float z) { id = i; зарплата = z; }
public float Зарплата(int номер) { return номер < id ? зарплата : -1; }
public void Зарплата(int номер, ref float зарпл)
{ if (номер < id)
{ float зрпл = зарплата;
зарплата = зарпл; зарпл = зрпл;
} } }
class Program
{ static void Main()
{ Сотрудник Иванов = new Сотрудник(12, 40000.0f);
float z = 45000.0f; Иванов.Зарплата(10, ref z);
System.Console.Write("Зарплата Иванова = " + Иванов.Зарплата(12));
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) 40000
(2) 45000
(3) 20000
(4) -1
(5) программа не выполняется, так как обнаружена одна или несколько синтаксических ошибок
Исходный модуль содержит код:
class ЧЕЛОВЕК
{
class ПАСПОРТ {}
class ДОЛЖНОСТЬ {}
}
class Program
{
static void Main() { ______ P; }
}
В методе Main
требуется объявить ссылку P
на тип ДОЛЖНОСТЬ
. Среди приведенных ниже вариантов ответов укажите истинный вариант:
(1) вместо знаков подчеркивания укажите ЧЕЛОВЕК
(2) вместо знаков подчеркивания укажите ЧЕЛОВЕК.ДОЛЖНОСТЬ
(3) вместо знаков подчеркивания укажите ДОЛЖНОСТЬ
(4) вместо знаков подчеркивания укажите ЧЕЛОВЕК.ПАСПОРТ.ДОЛЖНОСТЬ
(5) объявить требуемую ссылку в методе Main
невозможно
Класс, в заголовке которого указан модификатор public
:
(1) может быть предком для нескольких классов - прямых потомков
(2) может иметь только один класс в качестве прямого предка
(3) определяет все поля класса как общедоступные
(4) определяет все методы класса как общедоступные
(5) может иметь несколько классов в качестве прямых предков
Исходный модуль содержит код:
class ПРИБОР
{ public ПРИБОР() { System.Console.Write("ПРИБОР "); } }
class ПРИЕМНИК : ПРИБОР
{ public ПРИЕМНИК() { System.Console.Write("ПРИЕМНИК "); } }
class ТЕЛЕВИЗОР : ПРИЕМНИК
{ public ТЕЛЕВИЗОР() { System.Console.Write("ТЕЛЕВИЗОР "); } }
class Program
{
static void Main() { ПРИБОР P = new ТЕЛЕВИЗОР(); }
}
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) ПРИБОР
(2) ПРИБОР ТЕЛЕВИЗОР
(3) ПРИБОР ПРИЕМНИК ТЕЛЕВИЗОР
(4) ТЕЛЕВИЗОР
Исходный модуль содержит классы ЧЕЛОВЕК
,СОТРУДНИК
и Program
:
class ЧЕЛОВЕК {
string фамилия;
public ЧЕЛОВЕК(string фамилия) {this.фамилия = фамилия;}
public string ФАМ() { return фамилия; } }
class СОТРУДНИК:ЧЕЛОВЕК {
string должность;
public СОТРУДНИК(string фамилия, string должность):base(фамилия)
{ this.должность = должность; }
public string ДОЛ { get {return должность;} } }
В классе Program
определен метод Main
, в теле которого находится код:
ЧЕЛОВЕК P = new СОТРУДНИК("Петров","Кассир");
System.Console.Write("{0} {1}", ______________ );
Требуется вывести фамилию и должность сотрудника. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) P.ФАМ(), P.ДОЛ
(2) P.ФАМ, P.ДОЛ()
(3) P.фамилия, P.должность
(4) P.ФАМ(), ((СОТРУДНИК)P).ДОЛ
Исходный модуль содержит классы ClassA
, ClassB
, ClassC
и Program
:
class ClassA {
int a;
public int VA { get{return a; } set{a=value; } } }
class ClassB : ClassA {
int b;
public int VB { get{return b; } set{b=value; VA=b-3; } } }
class ClassC : ClassB {
int c;
public int VC { get{return c; } set{c=value; VB=c-2; } } }
В классе Program
определен метод Main
, в теле которого находится код:
ClassC P = new ClassC();
P.VC = 10;
System.Console.Write("{0} {1}", P.VC, P.VA);
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 10 0
(2) 10 7
(3) 10 5
(4) 8 5
Программист разработал следующее определение класса:
class Class
{
private int x, y;
public Class(int x, int y) { this.x = x; this.y = y; }
public static bool operator >(Class a, Class b) { return a.x > b.x; }
}
Среди приведенных ниже высказываний укажите истинное высказывание:
Определение класса необходимо дополнить методом с именем
(1) operator "
(2) operator >=
(3) operator <
(4) operator <=
(5) operator ==
Исходный модуль содержит классы Class
и Program
:
class Class
{
private int x, y;
public Class(int x, int y) { this.x = x; this.y = y; }
public static Class operator ++(Class a) { return new Class(a.x, a.y + 1);}
public void View(){System.Console.Write("{0} {1} ",x,y);}
}
В классе Program
определен метод Main
, в теле которого находится код:
Class a = new Class(2,3),b;
b = ++a;
b.View(); a.View();
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 2 3 2 4
(2) 3 4 3 4
(3) 2 3 3 4
(4) 2 4 2 4
Исходный модуль содержит определение классов
A
и
B
:
class A { public virtual string P() {return "ПЕТРОВ"; } }
Класс
B
определен как наследник класса
A
. Среди приведенных ниже высказываний укажите все истинные высказывания:
В классе B
метод P()
(1) может быть быть переопределен с модификатором new
(2) может быть переопределен с модификатором override
(3) может не переопределяться
(4) должен быть перегружен
(5) должен быть определен как абстрактный метод
Исходный модуль содержит классы A
, B
и Program
:
class A
{
public virtual string F1() { return "1"; }
public virtual string F2() { return "2"; }
}
class B : A
{
public new string F1() { return "3"; }
public override string F2() { return "4"; }
}
В классе Program
определен метод Main
, в теле которого находится код:
A p = new B();
System.Console.Write(p.F1()+ p.F2());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 24
(2) 13
(3) 14
(4) 23
(5) 34
Исходный модуль содержит классы A
, B
и Program
:
class A
{ public virtual void F() { System.Console.Write("Фрукты "); } }
class B : A
{
public new void F() { base.F(); System.Console.Write("Яблоки"); }
public void F(string s) {System.Console.Write(s); }
}
В классе Program
определен метод Main
, в теле которого находится код:
A p1 = new B(); B p2 = new B();
______________ ;
Требуется вывести сообщение: Фрукты Яблоки
. Среди перечисленных ниже кодов укажите все варианты кода, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, решающую поставленную задачу:
(1) p1.F()
(2) p2.F()
(3) p1.F(); p2.F()
(4) p1.F(); p2.F("Яблоки")
(5) p1.F("Яблоки")
Класс должен быть определен как абстрактный класс, если
(1) в классе не определен конструктор
(2) в классе отсутствуют поля
(3) все поля класса - статические
(4) один из методов класса не содержит реализации
(5) все методы класса не содержат реализации
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) любой класс, не содержащий полей, должен быть определен как интерфейс
(2) метод, объявленный в интерфейсе, неявно является открытым (public
-метод)
(3) метод, объявленный в интерфейсе, не должен содержать реализации
(4) интерфейс может быть реализован только в одном классе
(5) сигнатура метода в реализации должна точно совпадать с сигнатурой метода, объявленной в интерфейсе
Исходный модуль содержит код:
interface IЧеловек { string Имя(); string Фамилия(); }
class Человек : IЧеловек
{
string имя, фамилия;
public Человек(string имя, string фамилия) { this.имя=имя; this.фамилия=фамилия; }
public string Имя() { return имя; }
public string Фам() { return фамилия; }
}
class Program
{
static void Main()
{
Человек чел = new Человек("Иван","Сидоров");
System.Console.Write(чел.Имя()+чел.Фам());
}
}
Метод
Main
разрабатывался для вывода имени и фамилии человека.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) метод Имя()
объявлен в интерфейсе как закрытый
(2) класс Человек
не может иметь конструктора с параметрами
(3) сигнатура метода Имя()
, объявленного в интерфейсе, не совпадает с сигнатурой метода Имя()
, реализованного в классе Человек
(4) класс Человек
не полностью реализует интерфейс
(5) интерфейс не может содержать объявления нескольких методов
Исходный модуль содержит определения:
interface IСмена { void Сменить(); }
class Переключатель: IСмена
{
bool s;
public Переключатель(bool s){this.s = s;}
public void Сменить() { s = !s; System.Console.Write(" " + s); }
}
class Счетчик : IСмена
{
int s;
public Счетчик(int s) { this.s = s; }
public void Сменить() { s++; System.Console.Write(" " + s); }
}
В этом же модуле определен класс Program
c методом Main()
, в котором содержится следующий код:
IСмена a = new Переключатель(false);
IСмена b = new Счетчик(1);
a.Сменить(); a = b; a.Сменить(); b.Сменить(); a.Сменить();
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) True 2 3 4
(2) True False 2 True
(3) True 2 False True
(4) 2 3 4 5
(5) при запуске фиксируется синтаксическая ошибка, указывающая на несовместимость типов при объявлении переменных в методе Main()
Исходный модуль содержит код:
interface IФормула { int F(int x); }
class A: IФормула{ public int F(int x) { return x*x; } }
class B: IФормула{ public int F(int x) { return x * x * x; } }
class Program
{
static int Out(IФормула f, int x ) {return f.F(x); }
static void Main()
{
A a = new A(); B b = new B();
System.Console.WriteLine( _________ );
}
}
Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу для вычисления 3*3 + 2*2*2:
(1) Out(a,2) + Out(b,3)
(2) Out(a,3) + Out(b,2)
(3) Out(a.F,3) + Out(b.F,2)
(4) Out(a.F(3)) + Out(b.F(2))
(5) Out(a.F(2)) + Out(b.F(3))
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) в структуре могут быть определены свойства
(2) в структуре может быть определен конструктор без параметров
(3) в структуре может быть определен деструктор
(4) структура может содержать только определение полей
(5) структура как тип может быть определена с модификатором доступа public
Исходный модуль содержит определение типов Газета
, Журнал
и Program
:
{
public int Страницы;
public override string ToString() { return Страницы.ToString(); }
}
struct Журнал
{ public int Страницы; }
В классе Program
определен метод Main
, в теле которого находится код:
Газета a; Журнал b;
a.Страницы=20; b.Страницы =30;
System.Console.Write(a.ToString() + " " + b.ToString());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 20 30
(2) 20 Журнал
(3) 50
(4) Газета 30
(5) при запуске программы фиксируется ошибка: в структуре невозможно переопределить метод ToString()
Исходный модуль содержит код:
enum Цвет{Красный,Зеленый,Синий,Желтый,Черный,Белый}
enum Сторона{Север=3,Юг,Восток,Запад,СевероЗапад,ЮгоВосток}
class Program
{
static void Main()
{
Цвет цвет=Цвет.Синий;
Сторона сторона = __________ ;
System.Console.WriteLine("ЭТО БУДЕТ " + (int)сторона);
}
}
Среди перечисленных ниже вариантов инициализации укажите все варианты, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, которая выведет на консоль сообщение ЭТО БУДЕТ 5
:
(1) Сторона.Восток
(2) (Сторона)(цвет + 3)
(3) (Сторона)5
(4) 5
(5) ЮгоВосток
Исходный модуль содержит определения:
class Корпус {
public string тип; public int цена;
public Корпус (string тип,int цена){this.тип=тип; this.цена=цена; } }
class Лампочка {
public int мощность; public int цена;
public Лампочка(int мощность,int цена){this.мощность=мощность; this.цена=цена; } }
class Прибор {
public Корпус кор; public Лампочка лам;
public Прибор(Корпус кор,Лампочка лам){this.кор=кор; this.лам=лам; }
public int Цена { get {return кор.цена + лам.цена; } } }
В классе Program
определен метод Main
, в теле которого находится код:
Корпус кор = new Корпус("Тюльпан", 100); Лампочка лам = new Лампочка(60,50);
Прибор пр1=new Прибор(кор, лам);
лам.цена = 100;
Прибор пр2 = new Прибор(кор, лам);
System.Console.WriteLine(пр1.Цена + пр2.Цена);
Укажите результат вывода на консоль после выполнения метода Main():
(1) 300
(2) 350
(3) 400
(4) 0
(5) 150
Исходный модуль содержит определения:
struct Лампочка {
public int мощность;
public Лампочка(int мощность){this.мощность=мощность;} }
class Прибор {
public Лампочка[] лам;
public Прибор(Лампочка лам)
{ this.лам = new Лампочка[2]; this.лам[0]=this.лам[1]=лам;}
public int Мощность
{ get {
int s=0;
for (int i = 0; i < лам.Length; i++) s += лам[i].мощность;
return s; }
} }
В классе Program
определен метод Main
, в теле которого находится код:
Лампочка лам = new Лампочка(50);
Прибор пр1=new Прибор(лам);
лам.мощность = 100;
Прибор пр2=new Прибор(лам);
System.Console.WriteLine(пр1.Мощность + пр2.Мощность);
Укажите результат вывода на консоль после выполнения метода Main():
(1) 300
(2) 200
(3) 400
(4) 100
(5) 150
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) доступ к элементам коллекции типа ArrayList
может выполняться по индексу элемента
(2) значение свойства Count
применительно к коллекции типа Stack
соответствует количеству элементов в коллекции в данный момент
(3) значение свойства Count
применительно к коллекции типа Queue
доступно для записи и может быть установлено с помощью операции присваивания
(4) метод ToArray()
применительно к коллекции типа Stack
выполняет преобразование этой коллекции в коллекцию типа ArrayList
(5) коллекция типа ListDictionary
не может хранить объекты классов, определяемых программистом
Исходный модуль содержит указание используемых пространств имен System
, System.Collections
и определения классов:
System.Collections и определения классов:
class A {public virtual void Show(){Console.Write("SOS! ");}}
class B:A {public new void Show(){Console.Write("ВСЕМ! ");} }
class C:A {public new void Show(){Console.Write("УРА! "); } }
В классе Program
определен метод Main
, в теле которого находится код:
ArrayList a = new ArrayList();
a.Add(new A()); a.Add(new B()); a.Add(new C());
for (int i=0; i<a.Count; i++)
if(a[i] is A)
((A)a[i]).Show();
Укажите результат вывода после запуска программы на компиляцию и выполнение:
(1) SOS! ВСЕМ! УРА!
(2) генерируется исключение, так как невозможно преобразовать типы ссылок
(3) SOS! SOS! SOS!
(4) SOS! ВЕМ! SOS!
(5) SOS! SOS! УРА!
Программа разрабатывалась для заполнения таблицы автомобилей и вывода их марок на консоль:
using System;
using System.Collections;
class Program
{
public static void Main()
{
Hashtable tab = new Hashtable();
tab.Add(1, "Газ3102");
tab.Add(2, "Ваз2110");
foreach ( ____ ob in tab.Keys) Console.Write(tab[ob] + " ");
}
}
Среди перечисленных ниже кодов укажите все коды, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, которая выведет на консоль сообщение Ваз2110 Газ3102
:
(1) int
(2) string
(3) object
(4) tab
(5) Hashtable
Исходный модуль содержит указание используемых пространств имен System
, System.Collections
. В модуле определен единственный класс Program
c методом Main
, в теле которого находится код:
Stack s = new Stack();
string str = "A2B43";
for(int i=0; i<str.Length; i++)
if(str[i]>='0' && str[i]<='9') s.Push(str[i]);
while(s.Count > 0)
Console.Write(s.Pop());
Укажите результат вывода после запуска программы на компиляцию и выполнение:
(1) 34B2A
(2) 243
(3) 342
(4) программа бесконечно выводит на консоль 3
(5) программа бесконечно выводит на консоль 2
Среди перечисленных модификаторов укажите все модификаторы, допустимые при определении типа делегата:
(1) static
(2) public
(3) protected
(4) sealed
(5) private
Программа предназначена для вычисления и вывода квадрата числа 3:
public delegate int F( int x);
class A { public int F(int x) { return x * x; } }
class B { public double F(double x) { return x * x; } }
class Program
{
static void Main()
{
F f = new F( _____ );
System.Console.WriteLine(f(3));
}
}
Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу, решающую эту задачу:
(1) new B().F
(2) A.F
(3) A.F()
(4) new A.F()
(5) new A().F
Проанализируйте приведенную ниже программу и укажите результат после попытки запустить программу на компиляцию и выполнение:
using System;
class Program
{
static int[] a = new int[] { 10, 30, 20 };
public delegate void F();
public static void R() { Array.Reverse(a); }
public static void S() { Array.Sort(a); }
public static void M() { int buf = a[0]; a[0] = a[a.Length - 1]; a[a.Length - 1] = buf; }
static void Main()
{
F f = new F(S); f+=M; f-=S; f();
for (int i = 0; i < a.Length; i++) Console.Write(a[i]+" ");
}
}
(1) 10 20 30
(2) 10 30 20
(3) 30 20 10
(4) 20 30 10
(5) возникает исключение при попытке обращения по null
-ссылке
Проанализируйте приведенную ниже программу и укажите результат после попытки запустить программу на компиляцию и выполнение:
public delegate void Выдать(ref int a);
class Начисление{
int s = 100;
public event Выдать Зарплата;
public void Начислить() { Зарплата(ref s); }
public void Получите() { System.Console.Write(s); }}
class БумТрест { public static void OnЗарплата(ref int s) { s = s + 10; } }
class БумСтрой { public static void OnЗарплата(ref int s) { s = s - 30; } }
class Совместитель{
static void Main(string[] args) {
Начисление нач = new Начисление();
нач.Зарплата += new Выдать(БумТрест.OnЗарплата);
нач.Зарплата += new Выдать(БумСтрой.OnЗарплата);
нач.Начислить(); нач.Получите(); } }
(1) 160
(2) 80
(3) 90
(4) 70
(5) возникает исключение при попытке обращения по null
-ссылке
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) пользователь может переопределить поля системного исключения в своем классе
(2) допускается отсутствие catch
-блока после try
-блока
(3) если в случае ошибки управление получает catch
-блок, то после выполнения этого блока управление передается на блок finally
, если последний определен
(4) вложенность catch
-блоков не допускается
(5) после выполнения инструкции throw
, управление всегда передается блоку finally
Приведенному ниже коду доступно пространство имен System
.
static void Main()
{ long a=0;
Console.Write("Введи целое число:");
try { a = long.Parse(Console.ReadLine()); a=100/a; }
catch (FormatException) { Console.Write ("Неверный формат! "); }
catch (DivideByZeroException) { Console.Write("Делитель=0! "); }
catch (ApplicationException) { Console.Write("Повторите ввод! "); }
catch (Exception) { Console.Write("Программа завершается! "); }
Console.WriteLine("a="+a);
}
Пользователь собирается запустить программу и ввести символ d
, код которого равен 100
. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Неверный формат! Повторите ввод! Программа завершается! a=1
(2) Неверный формат!
(3) Неверный формат! a=0
(4) Неверный формат! Повторите ввод! Программа завершается!
(5) a=1
Проанализируйте приведенный ниже код.
class a
{ static void Main()
{ int a = 0;
try { a = Devide(a); }
catch (System.SystemException)
{ System.Console.Write(" Ошибка в данных! "); goto M; }
finally { System.Console.Write(" Программа завершена!"); }
M: System.Console.WriteLine(" a=" + a);
}
static int Devide(int b)
{ if (b == 0) throw new System.FormatException(); else b = 100 / b;
return b;
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что из блока catch
не допускается выход с помощью оператора goto
(2) Ошибка в данных! Программа завершена!
(3) a=0
(4) Ошибка в данных! Программа завершена! a=0
(5) Ошибка в данных!
Приведенному ниже коду доступно пространство имен System
.
class MyException1 : ApplicationException
{ public new string HelpLink = "Readme.txt ";
public MyException1() : base("Исключение-1") { }
public static int Метод()
{ int s = 5;
try { s = s / (s - 5); }
catch (DivideByZeroException)
{ Console.Write("Исключение-2 "); throw new MyException1(); }
return s;
} }
class Test
{ public static void Main()
{ int s=21;
try { s = MyException1.Метод(); }
catch (MyException1 ex) { Console.Write(ex.HelpLink + ex.Message); }
Console.WriteLine(" s=" + s);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Исключение-2 Readme.txt Исключение-2
(2) Исключение-2 Readme.txt Исключение-1 s=21
(3) Исключение-2 Readme.txt Исключение-2 s=21
(4) Исключение-2 Readme.txt MyException1 s=21
(5) Исключение-2 Readme.txt DivideByZeroException s=21
Определяемый программистом тип может быть
(1) файлом
(2) структурой
(3) перечислением
(4) указателем
(5) многомерным массивом
В заголовке определяемого не вложенного типа программист может указать доступность типа
(1) с помощью модификатора override
(2) с помощью модификатора protected
(3) с помощью модификатора private
(4) с помощью модификатора new
(5) по умолчанию
Исходный модуль содержит код:
internal class Point
{
public double x,y;
public Point(double x, double y) { this.x = x; this.y = y; }
public static void Move(double d){ x+=d; y+=d;}
}
class Program
{
static void Main()
{
Point p = new Point(1,1);
Point.Move(2);
}
}
Метод
Main
разрабатывался для перемещения точки по обеим координатам на 2.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) значение полей x
и y
не определено
(2) метод Move
не может обращаться к полям объекта
(3) тип Point
не доступен из класса Program
(4) метод Move
должен вызываться как метод объекта, а не метод класса
(5) в классе Point
не определен конструктор без параметров
Исходный модуль содержит код классов MyMessage
и Program
.
class MyMessage
{
public string msg = "Назад!";
public MyMessage(string s) { msg = s; }
public MyMessage() { }
public string Msg() { return msg; }
}
В классе Program
определен метод Main
, в теле которого находится код:
MyMessage m1 = new MyMessage("Вперед!");
MyMessage m2 = new MyMessage("Ура!");
MyMessage m3 = m1;
m1.msg = "Ура!";
System.Console.Write(m1.Msg() + m2.Msg() + m3.Msg());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) Ура!Ура!Ура!
(2) Ура! Ура!Вперед!
(3) Вперед!Ура!Ура!
(4) Назад!Ура!Назад!
При выполнении метода Main
необходимо создать объект класса Car
со следующими атрибутами: заводской номер - 143155
, марка - ГАЗ-3102
.
class Car
{
int nom; //Заводской номер
string mark; //Марка
public Car(int nom) { this.nom = nom; }
public Car(int nom,string mark):_________
{ this.mark = mark; }
}
class Program
{
static void Main()
{
Car car = new Car(143155,"ГАЗ-3102");
}
}
Среди приведенных ниже кодов укажите код, которым необходимо заменить знаки подчеркивания для получения корректной программы, решающей поставленную задачу:
(1) base(nom)
(2) base()
(3) Car(nom)
(4) this(nom)
(5) nom
Доступность метода из других классов может быть указана:
(1) по умолчанию
(2) с помощью модификатора public
(3) с помощью модификатора static
(4) с помощью модификатора protected
(5) с помощью модификатора override
Исходный модуль содержит код:
class MyOut
{
int A,B=777;
int View() { return A + B; }
}
class Program
{
static void Main()
{
MyOut mout = new MyOut();
System.Console.Write(mout.View());
}
}
Метод
Main
разрабатывался для получения суммы полей
A
и
B
объекта класса
MyOut
.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) поля A
и B
закрыты для доступа из других классов
(2) значение поля A
не определено
(3) вызов метода View()
должен содержать не имя объекта, а имя класса MyOut
(4) в классе MyOut
не определен конструктор без параметров
(5) метод View()
закрыт для доступа из других классов
Исходный модуль содержит код:
class Room
{
private int nom1;
public int nom2;
public Room(int a, int b){ nom1 = a; nom2 = b; }
public int Nom
{
get { return nom1 * 100 + nom2; }
set { if (value<5555) {nom1 = value/100; nom2 = value%100; }}
}
}
class Program
{
static void Main()
{
Room r = new Room(65,98);
r.Nom = 6712;
System.Console.Write("{0} ", r.Nom);
}
}
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 6598
(2) 6712
(3) 6512
(4) 6798
Исходный модуль содержит код:
class ЧЕЛОВЕК
{
class ПАСПОРТ {}
public class ДОЛЖНОСТЬ {}
}
class Program
{
static void Main() { ______ P; }
}
В методе Main
требуется объявить ссылку P
на тип ДОЛЖНОСТЬ
. Среди приведенных ниже вариантов ответов укажите истинный вариант:
(1) вместо знаков подчеркивания укажите ЧЕЛОВЕК
(2) вместо знаков подчеркивания укажите ЧЕЛОВЕК.ДОЛЖНОСТЬ
(3) вместо знаков подчеркивания укажите ДОЛЖНОСТЬ
(4) вместо знаков подчеркивания укажите ПАСПОРТ.ДОЛЖНОСТЬ
(5) объявить требуемую ссылку в методе Main
невозможно
Класс, в заголовке которого указан модификатор sealed
:
(1) может быть предком только для одного класса - прямого потомка
(2) является базовым классом и не может иметь предков
(3) определяет все поля и методы класса как защищенные
(4) может иметь не более одного класса в качестве прямого предка
(5) является изолированным классом и не может иметь потомков
Исходный модуль содержит код:
class ПРИБОР
{ public ПРИБОР() { System.Console.Write("ПРИБОР "); } }
class ПРИЕМНИК : ПРИБОР
{ public ПРИЕМНИК() { System.Console.Write("ПРИЕМНИК "); } }
class ТЕЛЕВИЗОР : ПРИЕМНИК
{ public ТЕЛЕВИЗОР() { System.Console.Write("ТЕЛЕВИЗОР "); } }
class Program
{
static void Main() { ПРИБОР P = new ПРИЕМНИК(); }
}
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) ПРИЕМНИК
(2) ПРИБОР ПРИЕМНИК
(3) ПРИБОР ПРИЕМНИК ТЕЛЕВИЗОР
(4) ТЕЛЕВИЗОР
Исходный модуль содержит код классов ЧЕЛОВЕК
,СОТРУДНИК
и Program
:
class ЧЕЛОВЕК {
string фамилия;
public ЧЕЛОВЕК(string фамилия) {this.фамилия = фамилия;}
public string ФАМ() { return фамилия; } }
class СОТРУДНИК:ЧЕЛОВЕК {
string должность;
public СОТРУДНИК(string фамилия, string должность):base(фамилия)
{ this.должность = должность; }
public string ДОЛ { get {return должность;} } }
В классе Program
определен метод Main
, в теле которого находится код:
СОТРУДНИК P = new СОТРУДНИК("Петров","Кассир");
System.Console.Write("{0} {1}", ______________ );
Требуется вывести фамилию и должность сотрудника. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) P.ФАМ(), P.ДОЛ
(2) P.ФАМ, P.ДОЛ()
(3) P.фамилия, P.должность
(4) P.ФАМ(), ((ЧЕЛОВЕК)P).ДОЛ
Исходный модуль содержит классы ClassA
, ClassB
, ClassC
и Program
:
class ClassA {
int a;
public int VA { get{return a;} set{a=value;} } }
class ClassB : ClassA {
int b;
public int VB { get{return b;} set{b=value; VA=b+3;} } }
class ClassC : ClassB {
int c=3;
public int VC { get{return c;} set{VB=c+2; c=value; } } }
В классе Program
определен метод Main
, в теле которого находится код:
ClassC P = new ClassC();
P.VC = 10;
System.Console.Write("{0} {1}", P.VC, P.VA);
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 10 8
(2) 10 15
(3) 3 8
(4) 10 13
Программист разработал следующее определение класса:
class Class
{
private int x, y;
public Class(int x, int y) { this.x = x; this.y = y; }
public static bool operator<=(Class a, Class b) { return a.x <= b.x; }
}
Среди приведенных ниже высказываний укажите истинное высказывание:
Определение класса необходимо дополнить методом с именем
(1) operator <
(2) operator >
(3) operator ==
(4) operator !=
(5) operator >=
Исходный модуль содержит классы Class
и Program
:
class Class
{
private int x, y;
public Class(int x, int y) { this.x = x; this.y = y; }
public static Class operator ++(Class a) { return new Class(a.x+1, a.y);}
public void View(){System.Console.Write("{0} {1} ",x,y);}
}
В классе Program
определен метод Main
, в теле которого находится код:
Class a = new Class(4,3),b;
b = a++;
b.View(); a.View();
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 4 3 5 3
(2) 4 3 5 4
(3) 5 3 5 3
(4) 5 4 5 4
Исходный модуль содержит определение классов
A
и
B
:
class A { public virtual void P() {System.Console.Write("ПЕТРОВ"); } }
Класс
B
определен как наследник класса
A
. Среди приведенных ниже высказываний укажите истинное высказывание:
В классе B
метод P()
(1) может быть переопределен с модификатором new
(2) должен быть переопределен с модификатором override
(3) может быть переопределен с модификатором abstract
(4) переопределяться не может
(5) перегружаться не может
Исходный модуль содержит классы A
, B
и Program
:
class A
{
public virtual string F1(){ return "1"; }
public virtual string F2(){ return "2"; }
}
class B:A
{
public new string F1() { return "3"; }
public override string F2() { return "4"; }
}
В классе Program
определен метод Main
, в теле которого находится код:
B p = new B();
System.Console.Write(p.F1()+ p.F2());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 12
(2) 34
(3) 14
(4) 23
(5) 13
Исходный модуль содержит классы A
, B
и Program
:
class A
{ public virtual void F() { System.Console.Write("Фрукты "); } }
class B : A
{
public override void F() { base.F(); System.Console.Write("Яблоки"); }
public void F(string s) {System.Console.Write(s); }
}
В классе Program
определен метод Main
, в теле которого находится код:
A p1 = new B(); B p2 = new B();
______________ ;
Требуется вывести сообщение: Фрукты Яблоки
. Среди перечисленных ниже кодов укажите все варианты кода, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, решающую поставленную задачу:
(1) p1.F();
(2) p2.F();
(3) p1.F(); p2.F();
(4) p1.F(); p2.F("Яблоки");
(5) p2.F("Яблоки");
Класс должен быть определен как абстрактный класс, если
(1) хотя бы один из методов класса определен как абстрактный метод
(2) хотя бы один из методов класса определен как виртуальный метод
(3) все методы класса определены как виртуальные методы
(4) хотя бы одно из полей класса определено как поле только для чтения
(5) требуется запретить наследование от этого класса
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) интерфейс должен содержать определение конструктора без параметров
(2) доступность метода, объявляемого в интерфейсе, может указываться с помощью модификатора protected
(3) ни один метод интерфейса не может быть объявлен статическим
(4) в классе, который явно реализует интерфейс, реализуемые методы должны быть определены как открытые
(5) класс может реализовать не более одного интерфейса
Исходный модуль содержит код:
interface IЧеловек
{ public string Имя(); public string Фамилия(); }
class Человек : IЧеловек
{
string имя, фамилия;
public Человек(string имя, string фамилия){ this.имя=имя; this.фамилия=фамилия; }
public string Имя() { return имя; }
public string Фамилия() { return фамилия; }
}
class Program
{
static void Main()
{
Человек чел = new Человек("Иван","Сидоров");
System.Console.Write(чел.Имя()+чел.Фамилия());
}
}
Метод
Main
разрабатывался для вывода имени и фамилии человека.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) объявление методов в интерфейсе не может иметь модификаторов доступности
(2) класс Человек
не полностью реализует интерфейс
(3) сигнатура метода Фамилия()
, объявленного в интерфейсе, не совпадает с сигнатурой метода Фамилия()
, реализованного в классе Человек
(4) интерфейс IЧеловек
недоступен для реализации в классе Человек
(5) для обращения к методам Имя()
и Фамилия()
необходимо создать объект типа IЧеловек
Исходный модуль содержит определения:
interface IСмена { void Сменить(); }
class Переключатель: IСмена
{
bool s;
public Переключатель(bool s){this.s = s;}
public void Сменить() { s = !s; System.Console.Write(" " + s); }
}
class Счетчик : IСмена
{
int s;
public Счетчик(int s) { this.s = s; }
public void Сменить() { s++; System.Console.Write(" " + s); }
}
В этом же модуле определен класс Program
c методом Main()
, в котором содержится следующий код:
IСмена a = new Переключатель(false);
IСмена b = new Счетчик(1);
b.Сменить(); a.Сменить(); b = a; b.Сменить(); a = b; a.Сменить();
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 2 True 3 False
(2) 3 True 4 False
(3) 3 False True False
(4) 2 True False True
(5) при запуске фиксируется синтаксическая ошибка, указывающая на несовместимость типов при объявлении переменных в методе Main()
Исходный модуль содержит код:
interface IФормула { int F(int x); }
class A: IФормула{ public int F(int x) { return x*x*x; } }
class B: IФормула{ public int F(int x) { return x*x; } }
class Program
{
static int Out(IФормула f, int x ) {return f.F(x); }
static void Main()
{
A a = new A(); B b = new B();
System.Console.WriteLine( ______________);
}
}
Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу для вычисления 2*2*2 + 4*4:
(1) Out(a, 2) + Out(b, 4)
(2) Out(a,4)+ Out(b,2)
(3) Out(a.F,2)+ Out(b.F,4)
(4) Out(a.F(2))+ Out(b.F(4))
(5) Out(a.F(4))+ Out(b.F(2))
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) в структуре может быть определен конструктор с параметрами
(2) структура может содержать определения вложенных типов структур
(3) структура может быть определена как абстрактная
(4) тип структуры по умолчанию является бесплодным (sealed
)
(5) методы структур могут быть определены как виртуальные
Исходный модуль содержит определение типов Газета
, Журнал
и Program
:
struct Газета
{ public int Страницы; }
struct Журнал
{
public int Страницы;
public override string ToString() { return Страницы.ToString(); }
}
В классе Program
определен метод Main
, в теле которого находится код:
Газета a; Журнал b;
a.Страницы=20; b.Страницы =30;
System.Console.Write(a.ToString() + " " + b.ToString());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) Газета Журнал
(2) 20 Журнал
(3) Газета 30
(4) 50
(5) при запуске программы фиксируется ошибка: в структуре невозможно переопределить метод ToString()
Исходный модуль содержит код:
enum Цвет{Красный,Зеленый,Синий,Желтый,Черный=2,Белый}
enum Сторона{Север,Юг,Восток,Запад,СевероЗапад,ЮгоВосток}
class Program
{
static void Main()
{
Цвет цвет=Цвет.Желтый;
Сторона сторона = _________ ;
System.Console.WriteLine("ЭТО БУДЕТ " + (int)сторона);
}
}
Среди перечисленных ниже вариантов инициализации укажите все варианты, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, которая выведет на консоль сообщение ЭТО БУДЕТ 3
:
(1) Запад
(2) Сторона.Восток
(3) (Сторона)цвет
(4) (Сторона)Цвет.Белый
(5) Сторона.СевероЗапад
Исходный модуль содержит определения:
class Корпус {
public string тип; public int цена;
public Корпус (string тип,int цена){this.тип=тип; this.цена=цена; } }
class Лампочка {
public int мощность; public int цена;
public Лампочка(int мощность,int цена){this.мощность=мощность; this.цена=цена; } }
class Прибор {
public Корпус кор; public Лампочка лам;
public Прибор(Корпус кор,Лампочка лам)
{this.кор=кор; this.лам=new Лампочка(лам.мощность, лам.цена); }
public int Цена { get {return кор.цена + лам.цена; } } }
В классе Program
определен метод Main
, в теле которого находится код:
Корпус кор = new Корпус("Тюльпан", 100); Лампочка лам = new Лампочка(60,50);
Прибор пр1=new Прибор(кор, лам);
лам.цена = 100;
Прибор пр2 = new Прибор(кор, лам);
System.Console.WriteLine(пр1.Цена + пр2.Цена);
Укажите результат вывода на консоль после выполнения метода Main():
(1) 300
(2) 350
(3) 400
(4) 0
(5) 150
Исходный модуль содержит определения:
struct Лампочка {
public int мощность;
public Лампочка(int мощность){this.мощность=мощность;} }
class Прибор {
public Лампочка[] лам;
public Прибор(Лампочка лам)
{ this.лам = new Лампочка[2]; this.лам[0]=this.лам[1]=лам;}
public int Мощность
{ get {
int s=0;
for (int i = 0; i < лам.Length; i++) s += лам[i].мощность;
return s; }
} }
В классе Program
определен метод Main
, в теле которого находится код:
Лампочка лам = new Лампочка(50);
Прибор пр1=new Прибор(лам);
Прибор пр2=new Прибор(лам);
лам.мощность = 100;
System.Console.WriteLine(пр1.Мощность + пр2.Мощность);
Укажите результат вывода на консоль после выполнения метода Main():
(1) 300
(2) 200
(3) 400
(4) 100
(5) 150
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) доступ к элементам коллекции типа Stack
может выполняться по индексу элемента
(2) значение свойства Count
применительно к коллекции типа ListDictionary
соответствует максимально возможному количеству элементов в коллекции
(3) в классе ArrayList
определен метод сортировки элементов коллекции
(4) метод ToArray()
применительно к коллекции типа Queue
выполняет преобразование этой коллекции в массив объектов
(5) коллекция типа Stack
может хранить объекты классов, определяемых программистом
Исходный модуль содержит указание используемых пространств имен System
, System.Collections
и определения классов:
System.Collections и определения классов:
class A {public virtual void Show(){Console.Write("SOS! ");}}
class B:A {public override void Show(){Console.Write("ВСЕМ! ");} }
class C:A {public new void Show(){Console.Write("УРА! "); } }
В классе Program
определен метод Main
, в теле которого находится код:
ArrayList a = new ArrayList();
a.Add(new A()); a.Add(new B()); a.Add(new C());
for (int i=0; i<a.Count; i++)
if(a[i] is A)
((A)a[i]).Show();
Укажите результат вывода после запуска программы на компиляцию и выполнение:
(1) SOS! ВСЕМ! УРА!
(2) генерируется исключение, так как невозможно преобразовать типы ссылок
(3) SOS! SOS! SOS!
(4) SOS! ВСЕМ! SOS!
(5) SOS! SOS! УРА!
Программа разрабатывалась для заполнения таблицы автомобилей и вывода их марок на консоль:
using System;
using System.Collections;
class Program
{
public static void Main()
{
Hashtable tab = new Hashtable();
tab.Add(1, "Газ3102");
tab.Add(2, "Ваз2110");
foreach ( ______ ob in tab.Values) Console.Write(ob + " ");
}
}
Среди перечисленных ниже кодов укажите все коды, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, которая выведет на консоль сообщение Ваз2110 Газ3102
:
(1) int
(2) string
(3) object
(4) tab
(5) Hashtable
Исходный модуль содержит указание используемых пространств имен System
, System.Collections
. В модуле определен единственный класс Program
c методом Main
, в теле которого находится код:
Stack s = new Stack();
string str = "A2B43";
for(int i=0; i<str.Length; i++)
if(str[i]>='0' && str[i]<='9') s.Push(str[i]);
while(s.Count > 0)
Console.Write(s.Peek());
Укажите результат вывода после запуска программы на компиляцию и выполнение:
(1) 34B2A
(2) 243
(3) 342
(4) программа бесконечно выводит на консоль 3
(5) программа бесконечно выводит на консоль 2
При определении типа делегата обязательно необходимо указать:
(1) модификатор доступности делегата
(2) модификатор доступности метода
(3) имя метода
(4) параметры метода (если таковые имеются)
(5) тип возвращаемого значения
Программа предназначена для вычисления и вывода квадрата числа 3:
public delegate double F( double x);
class A { public int F(int x) { return x * x; } }
class B { public static double F(double x) { return x * x; } }
class Program
{
static void Main()
{
F f = new F( _____ );
System.Console.WriteLine(f(3));
}
}
Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу, решающую эту задачу:
(1) new B().F
(2) B.F
(3) B.F()
(4) new A().F
(5) A.F
Проанализируйте приведенную ниже программу и укажите результат после попытки запустить программу на компиляцию и выполнение:
using System;
class Program
{
static int[] a = new int[] { 10, 30, 20 };
public delegate void F();
public static void R() { Array.Reverse(a); }
public static void S() { Array.Sort(a); }
public static void M() { int buf = a[0]; a[0] = a[a.Length - 1]; a[a.Length - 1] = buf; }
static void Main()
{
F f = new F(R); f += S; f -= R; f -= S; f();
for (int i = 0; i < a.Length; i++) Console.Write(a[i]+" ");
}
}
(1) 10 20 30
(2) 10 30 20
(3) 30 20 10
(4) 20 30 10
(5) возникает исключение при попытке обращения по null
-ссылке
Проанализируйте приведенную ниже программу и укажите результат после попытки запустить программу на компиляцию и выполнение:
public delegate void Выдать(ref int a);
class Начисление{
int s = 100;
public event Выдать Зарплата;
public void Начислить() { Зарплата(ref s); }
public void Получите() { System.Console.Write(s); }}
class БумТрест { public static void OnЗарплата(ref int s) { s = s + 10; } }
class БумСтрой { public static void OnЗарплата(ref int s) { s = s - 30; } }
class Совместитель{
static void Main(string[] args) {
Начисление нач = new Начисление();
нач.Зарплата += new Выдать(БумТрест.OnЗарплата);
нач.Зарплата += new Выдать(БумСтрой.OnЗарплата);
нач.Зарплата -= new Выдать(БумТрест.OnЗарплата);
нач.Зарплата -= new Выдать(БумСтрой.OnЗарплата);
нач.Начислить(); нач.Получите(); } }
(1) 100
(2) 0
(3) 80
(4) 200
(5) возникает исключение при попытке обращения по null
-ссылке
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) исключение - это ситуация, нарушающая нормальное выполнение программы
(2) за try
-блоком может следовать блок finally
, если отсутствуют catch
-блоки
(3) выполнение блока finally
всегда приводит к завершению программы
(4) метод может иметь несколько блоков finally
(5) после выполнения catch
-блока управление передается следующему за ним catch
-блоку
Проанализируйте метод Main()
, которому доступно пространство имен System
.
static void Main()
{ int s = 0, i = 0;
int[] a = { 1, 2, 3, 4, 5 };
try {
for (i = 0; i <= 5; i++) s += a[i];
if (i == 5) s = s / (i - 5);
Console.Write(" Сумма=" + s);
}
catch (IndexOutOfRangeException) { Console.Write(" Исключение-1 "); }
catch (DivideByZeroException) { Console.Write(" Исключение-2 "); }
catch { Console.Write(" Обнаружены ошибки! "); }
Console.WriteLine(" i=" + i);
}
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) s=15
(2) Исключение-1
(3) Исключение-1 i=5
(4) Исключение-2 i=5
(5) Исключение-2 Обнаружены ошибки!
Проанализируйте приведенный ниже код.
static void Main()
{ int a = 0;
try { a = Devide(a); }
catch (System.FormatException)
{ System.Console.Write(" Ошибка в данных! "); }
finally { System.Console.Write(" Программа завершена!"); }
System.Console.WriteLine(" a=" + a);
}
static int Devide(int b)
{ return 100 / b; }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Программа завершена!
(2) Программа завершена! a=0
(3) a=0
(4) Ошибка в данных! Программа завершена!
(5) программа завершится аварийно, так как отсутствует catch
-блок для обработки сгенерированного исключения
Приведенному ниже коду доступно пространство имен System
.
class Class1
{ public static int Сумма()
{ int[] a = { 1, 2, 3, 4, 5}, b = { 1, 2, 3 };
int s=0;
for (int i = 0; i < a.Length; i++)
{ try { s = a[i] + b[i]; }
catch (IndexOutOfRangeException)
{ Console.Write("Исключение-1. "); throw; }
}
return s;
} }
class Test
{ public static void Main()
{ int s=21;
try { s = Class1.Сумма(); }
catch (IndexOutOfRangeException)
{ Console.Write("Программа завершена. "); }
Console.WriteLine(" s=" + s);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Программа завершена. s=21
(2) s=21
(3) Исключение-1. s=21
(4) Исключение-1. Программа завершена. s=21
(5) Исключение-1. Программа завершена.
Определяемый программистом тип может быть
(1) cтеком
(2) cписком
(3) очередью
(4) классом
(5) интерфейсом
Программист определил тип как
class MyOut {}
Тип MyOut
будет доступен
(1) из любого класса любого компоновочного блока
(2) из любого класса внутри компоновочного блока, в котором MyOut
определен
(3) только из классов с модификатором public
(4) только из классов с модификатором internal
(5) только из классов, у которых доступность указана по умолчанию
Исходный модуль содержит код:
internal class Point
{
public double x,y;
public Point(double x, double y) { this.x = x; y = y; }
public void Move(double d){ x+=d; y+=d;}
}
class Program
{
static void Main()
{
Point p = new Point(1,1);
p.Move(1);
System.Console.Write("{0} {1}", p.x, p.y);
}
}
Метод
Main
разрабатывался для перемещения точки по обеим координатам на 1.
При запуске программы выведены значения 2 1
вместо ожидаемых значений 2 2
. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) значение полей x
и y
не определено
(2) значение поля y
может быть изменено только конструктором
(3) локальная переменная y
скрывает поле y
(4) метод Move
должен вызываться как метод объекта, а не метод класса
(5) в классе Point
не определен конструктор без параметров
Исходный модуль содержит код классов MyMessage
и Program
.
class MyMessage
{
private readonly string msg = "Ура!";
public MyMessage(string s) { msg = s; }
public MyMessage() { msg = "Вперед"; }
public string Msg() { return msg; }
}
В классе Program
определен метод Main
, в теле которого находится код:
MyMessage m1 = new MyMessage("Назад!");
MyMessage m2 = new MyMessage();
MyMessage m3 = new MyMessage("Назад!");
System.Console.Write(m1.Msg() + m2.Msg() + m3.Msg());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) программа не корректна: попытка изменить переменную, доступную только по чтению
(2) Назад! Ура!Вперед!
(3) Назад!Вперед!Назад!
(4) Назад!Ура!Назад!
При выполнении метода Main
необходимо создать объект класса Clock
со следующими атрибутами: заводской номер - 3355
, марка - ПОЛЕТ
.
class Clock
{
int nom; //Заводской номер
static string mark; //Марка
public Clock(int nom) { this.nom = nom; }
public Clock() { nom = 3355; }
static Clock() { mark = "ПОЛЕТ"; }
}
class Program
{
static void Main()
{ Clock c = ________________; }
}
Среди приведенных ниже кодов укажите все коды, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, решающую поставленную задачу:
(1) new Clock(3355)
(2) Clock(3355)
(3) Clock(3355,"ПОЛЕТ")
(4) new Clock(3355,"ПОЛЕТ")
(5) new Clock()
;
Доступность поля из других классов может быть указана:
(1) по умолчанию
(2) с помощью модификатора new
(3) с помощью модификатора out
(4) с помощью модификатора protected
(5) с помощью модификатора private
Исходный модуль содержит код:
class MyOut
{
protected static int A = 999;
protected int B;
public static int View() { return A; }
}
class Program
{
static void Main()
{
MyOut mout = new MyOut();
System.Console.Write(mout.View() + mout.B);
}
}
Метод
Main
разрабатывался для получения суммы полей
A
и
B
объекта класса
MyOut
.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) поле A
недоступно из класса Program
(2) в классе MyOut
не определен конструктор без параметров
(3) тип MyOut
не доступен из класса Program
(4) поле B
недоступно из класса Program
(5) значение поля B
не определено
Исходный модуль содержит код:
class Room
{
private int nom1;
public int nom2;
public Room(int a, int b){ nom1 = a; nom2 = b; }
public int Nom
{
get { return nom1 * 100 + nom2; }
set { if (value<5555) {nom1 = value/100; nom2 = value%100; }}
}
}
class Program
{
static void Main()
{
Room r = new Room(12,45);
r.Nom = 4431;
System.Console.Write("{0} ", r.Nom);
}
}
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 1231
(2) 1245
(3) 4431
(4) 4445
Исходный модуль содержит код:
class ЧЕЛОВЕК
{
public class ПАСПОРТ {}
public class ДОЛЖНОСТЬ {}
}
class Program
{
static void Main() { ______ P; }
}
В методе Main
требуется объявить ссылку P
на тип ПАСПОРТ
. Среди приведенных ниже вариантов ответов укажите истинный вариант:
(1) вместо знаков подчеркивания укажите ЧЕЛОВЕК
(2) вместо знаков подчеркивания укажите ПАСПОРТ
(3) вместо знаков подчеркивания укажите ЧЕЛОВЕК.ПАСПОРТ
(4) вместо знаков подчеркивания укажите ЧЕЛОВЕК.ДОЛЖНОСТЬ.ПАСПОРТ
(5) объявить требуемую ссылку в методе Main
невозможно
Класс, в заголовке которого указан модификатор internal
:
(1) может иметь несколько классов в качестве прямых предков
(2) является базовым классом и не может иметь предков
(3) определяет все поля и методы класса как закрытые
(4) может быть предком для нескольких классов - прямых потомков
(5) является изолированным классом и не может иметь потомков
Исходный модуль содержит код:
class ПРИБОР
{ public ПРИБОР() { System.Console.Write("ПРИБОР "); } }
class ПРИЕМНИК : ПРИБОР
{ public ПРИЕМНИК() { System.Console.Write("ПРИЕМНИК "); } }
class ТЕЛЕВИЗОР : ПРИБОР
{ public ТЕЛЕВИЗОР() { System.Console.Write("ТЕЛЕВИЗОР "); } }
class Program
{
static void Main() { ПРИБОР P = new ТЕЛЕВИЗОР(); }
}
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) ПРИБОР
(2) ПРИБОР ТЕЛЕВИЗОР ПРИЕМНИК
(3) ПРИБОР ПРИЕМНИК ТЕЛЕВИЗОР
(4) ПРИБОР ТЕЛЕВИЗОР
Исходный модуль содержит код классов ЧЕЛОВЕК
,СОТРУДНИК
и Program
:
class ЧЕЛОВЕК {
string фамилия;
public ЧЕЛОВЕК(string фамилия) {this.фамилия = фамилия;}
public string ФАМ { get {return фамилия; } } }
class СОТРУДНИК:ЧЕЛОВЕК {
string должность;
public СОТРУДНИК(string фамилия, string должность):base(фамилия)
{ this.должность = должность; }
public string ДОЛ() { return должность; } }
В классе Program
определен метод Main
, в теле которого находится код:
СОТРУДНИК P = new СОТРУДНИК("Петров","Кассир");
System.Console.Write("{0} {1}", ______________ );
Требуется вывести фамилию и должность сотрудника. Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить программу, решающую поставленную задачу:
(1) P.ФАМ(), P.ДОЛ
(2) P.ФАМ, P.ДОЛ()
(3) P.фамилия, P.ДОЛ()
(4) P.ФАМ, ((ЧЕЛОВЕК)P).ДОЛ()
Исходный модуль содержит классы ClassA
, ClassB
, ClassC
и Program
:
class ClassA {
int a;
public int VA { get{return a;} set{a=value;} } }
class ClassB : ClassA {
int b;
public int VB { get{return b;} set{b=value; VA=b+3;} } }
class ClassC : ClassA {
int c=20;
public int VC { get { return c; } set {c=value; VA=c+2;} } }
В классе Program
определен метод Main
, в теле которого находится код:
ClassC P = new ClassC();
P.VC = 10;
System.Console.Write("{0} {1}", P.VC, P.VA);
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 20 22
(2) 10 15
(3) 20 25
(4) 10 12
Программист разработал следующее определение класса:
class Class
{
private int x, y;
public Class(int x, int y) { this.x = x; this.y = y; }
public static bool operator !=(Class a, Class b) { return a.x != b.x; }
}
Среди приведенных ниже высказываний укажите истинное высказывание:
Определение класса необходимо дополнить методом с именем
(1) operator ==
(2) operator >=
(3) operator <=
(4) operator >
(5) operator <
Исходный модуль содержит классы Class
и Program
:
class Class
{
private int x, y;
public Class(int x, int y) { this.x = x; this.y = y; }
public static Class operator ++(Class a) { return new Class(a.x+1, a.y+2);}
public void View(){System.Console.Write("{0} {1} ",x,y);}
}
В классе Program
определен метод Main
, в теле которого находится код:
Class a = new Class(2,5),b;
b = a++;
b.View(); a.View();
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 3 6 3 6
(2) 2 5 3 6
(3) 2 5 3 7
(4) 3 7 3 7
Исходный модуль содержит определение классов
A
и
B
:
class A { public void F() {System.Console.Write("ИВАНОВ"); } }
Класс
B
определен как наследник класса
A
. Среди приведенных ниже высказываний укажите все истинные высказывания:
В классе B
метод F()
(1) может быть переопределен с модификатором new
(2) может быть переопределен с модификатором override
(3) может быть переопределен с модификатором abstract
(4) переопределяться не может
(5) может быть определен с тем же именем, но другим составом параметров
Исходный модуль содержит классы A
, B
и Program
:
class A
{
public virtual string F1(){return "1";}
public virtual string F2(){return "2";}
}
class B:A
{
public override string F1() { return "3"; }
public new string F2() { return "4"; }
}
В классе Program
определен метод Main
, в теле которого находится код:
A p = new B();
System.Console.Write(p.F1()+ p.F2());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) 12
(2) 34
(3) 14
(4) 13
(5) 32
Исходный модуль содержит классы A
, B
и Program
:
class A
{ public virtual void F() { System.Console.Write("Фрукты "); } }
class B : A
{
public override void F() { System.Console.Write("Яблоки"); }
public void F(string s) {System.Console.Write(s); }
}
В классе Program
определен метод Main
, в теле которого находится код:
A p1 = new A(); A p2 = new B();
______________ ;
Требуется вывести сообщение: Фрукты Яблоки
. Среди перечисленных ниже кодов укажите вариант кода, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу, решающую поставленную задачу:
(1) p1.F()
(2) p2.F()
(3) p1.F(); p2.F()
(4) p2.F("Фрукты"); p2.F()
(5) p1.F(); p2.F("Яблоки")
Из приведенных ниже высказываний укажите все истинные высказывания, относящиеся к абстрактным классам:
(1) объект абстрактного класса создать невозможно
(2) абстрактный класс может быть использован в качестве базового класса
(3) класс - прямой потомок абстрактного класса, должен переопределить все абстрактные методы предка
(4) класс - прямой потомок абстрактного класса, должен быть в обязательном порядке определен как абстрактный класс
(5) определение абстрактного класса может содержать определение полей
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) класс может реализовать несколько интерфейсов
(2) объект типа интерфейса создать невозможно
(3) интерфейс может содержать определение деструктора
(4) доступность метода, объявляемого в интерфейсе, может указываться с помощью модификатора private
(5) интерфейс может содержать определение виртуального метода
Исходный модуль содержит код:
interface IЧеловек
{ string Фамилия(); string Должность(); }
class Человек { public string фамилия; }
class Сотрудник : IЧеловек,Человек
{
public string должность;
public string Фамилия() {return фамилия;}
public string Должность() { return должность; }
}
class Program
{
static void Main()
{
Сотрудник с = new Сотрудник();
с.фамилия = "Иванов"; с.должность = "Инженер";
System.Console.Write(с.Фамилия()+с.Должность());
}
}
Метод
Main
разрабатывался для вывода фамилии и должности сотрудника.
Трансляция программы завершена неудачно. Из приведенных высказываний укажите высказывание, которое раскрывает причину некорректности программы:
(1) класс Человек
не может иметь открытых полей
(2) класс Сотрудник
не может иметь открытых полей
(3) объявление метода Фамилия()
в интерфейсе должно содержать модификатор public
(4) объявление метода Должность()
в интерфейсе должно содержать модификатор public
(5) в определении класса Сотрудник
имя базового класса должно предшествовать имени реализуемого интерфейса
Исходный модуль содержит определения:
interface IСмена { void Сменить(); }
class Переключатель: IСмена
{
bool s;
public Переключатель(bool s){this.s = s;}
public void Сменить() { s = !s; System.Console.Write(" " + s); }
}
class Счетчик : IСмена
{
int s;
public Счетчик(int s) { this.s = s; }
public void Сменить() { s--; System.Console.Write(" " + s); }
}
В этом же модуле определен класс Program
c методом Main()
, в котором содержится следующий код:
IСмена a = new Переключатель(true);
IСмена b = new Счетчик(9),c;
c = b; a.Сменить(); b.Сменить(); b = a; b.Сменить(); b = c; b.Сменить();
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) True 8 False 7
(2) False 8 7 6
(3) False 8 True 7
(4) 8 7 6 False
(5) при запуске фиксируется синтаксическая ошибка, указывающая на несовместимость типов при объявлении переменных в методе Main()
Исходный модуль содержит код:
interface IФормула { int F(int x); }
class A: IФормула{ public int F(int x) { return x*x*x; } }
class B: IФормула{ public int F(int x) { return x*x; } }
class Program
{
static int Out(IФормула f, int x ) {return f.F(x); }
static void Main()
{
A a = new A(); B b = new B();
System.Console.WriteLine(Out(a, 3) + Out(b, 4));
}
}
Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу для вычисления 3*3*3 + 2*2:
(1) Out(a, 2) + Out(b, 2)
(2) Out(a,F)+ Out(b,F)
(3) Out(a.F())+ Out(b.F())
(4) Out(a.F(3))+ Out(b.F(2))
(5) Out(a, 3) + Out(b, 2)
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) структура может содержать определения методов
(2) структура может переопределять методы, унаследованные от класса object
(3) в определении структуры нельзя задавать начальное значение поля, если это поле не статическое
(4) методы структур могут быть определены как абстрактные
(5) структура не может содержать реализацию интерфейсов
Исходный модуль содержит определение типов Газета
, Журнал
и Program
:
struct Газета
{
public int Страницы;
public override string ToString() { return Страницы.ToString(); }
}
struct Журнал
{
public int Страницы;
public override string ToString() { return Страницы.ToString(); }
}
В классе Program
определен метод Main
, в теле которого находится код:
Газета a; Журнал b;
a.Страницы=20; b.Страницы =30;
System.Console.Write(a.ToString() + " " + b.ToString());
Укажите результат вывода на консоль после выполнения метода Main()
:
(1) Газета Журнал
(2) 30 20
(3) 50
(4) 20 30
(5) при запуске программы фиксируется ошибка: в структуре невозможно переопределить метод ToString()
Исходный модуль содержит код:
enum Цвет{Красный,Зеленый,Синий,Желтый=1,Черный,Белый}
enum Сторона{Север,Юг,Восток,Запад=1,СевероЗапад,ЮгоВосток}
class Program
{
static void Main()
{
Сторона сторона = Сторона.СевероЗапад;
Цвет цвет = __________ ;
System.Console.WriteLine("ЭТО БУДЕТ " + (int)цвет);
}
}
Среди перечисленных ниже вариантов инициализации укажите все варианты, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, которая выведет на консоль сообщение ЭТО БУДЕТ 2
:
(1) 2
(2) Цвет.Зеленый
(3) Цвет.Черный
(4) Цвет.Синий
(5) (Цвет)(Сторона.ЮгоВосток - 1)
Исходный модуль содержит определения:
class Корпус {
public string тип; public int цена;
public Корпус (string тип,int цена){this.тип=тип; this.цена=цена; } }
class Лампочка {
public int мощность; public int цена;
public Лампочка(int мощность,int цена){this.мощность=мощность; this.цена=цена; } }
class Прибор {
public Корпус кор; public Лампочка лам;
public Прибор(Корпус кор,Лампочка лам)
{this.кор=кор; this.лам=new Лампочка(лам.мощность, лам.цена); }
public int Цена { get {return кор.цена + лам.цена; } } }
В классе Program
определен метод Main
, в теле которого находится код:
Корпус кор = new Корпус("Тюльпан", 100); Лампочка лам = new Лампочка(60,50);
Прибор пр1=new Прибор(кор, лам);
Прибор пр2=new Прибор(кор, лам);
лам.цена = 100;
System.Console.WriteLine(пр1.Цена + пр2.Цена);
Укажите результат вывода на консоль после выполнения метода Main():
(1) 300
(2) 350
(3) 400
(4) 0
(5) 150
Исходный модуль содержит определения:
struct Лампочка {
public int мощность;
public Лампочка(int мощность){this.мощность=мощность;} }
class Прибор {
public Лампочка[] лам;
public Прибор(Лампочка[] лам) { this.лам = лам;}
public int Мощность
{ get {
int s=0;
for (int i = 0; i < лам.Length; i++) s += лам[i].мощность;
return s; }
} }
В классе Program
определен метод Main
, в теле которого находится код:
Лампочка л1 = new Лампочка(50);
Лампочка л2 = new Лампочка(100);
Лампочка[] лам = new Лампочка[] { л1, л2 };
Прибор пр1=new Прибор(лам);
л2 = л1;
Прибор пр2=new Прибор(лам);
System.Console.WriteLine(пр1.Мощность + пр2.Мощность);
Укажите результат вывода на консоль после выполнения метода Main():
(1) 250
(2) 200
(3) 400
(4) 100
(5) 300
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) значение свойства Capacity
применительно к коллекции типа ArrayList
соответствует максимально возможному количеству элементов в коллекции
(2) метод Clear()
применительно к коллекции типа Hashtable
выполняет установку всех элементов коллекции в значение по умолчанию
(3) коллекция типа Queue
поддерживает упорядоченность элементов в порядке их занесения в коллекцию
(4) коллекция типа Stack
поддерживает упорядоченность элементов в порядке, обратном их занесения в коллекцию
(5) коллекция типа ArrayList
может хранить объекты только типов значений
Исходный модуль содержит указание используемых пространств имен System
, System.Collections
и определения классов:
System.Collections и определения классов:
class A {public virtual void Show(){Console.Write("SOS! ");}}
class B:A {public new void Show(){Console.Write("ВСЕМ! ");} }
class C:A {public override void Show(){Console.Write("УРА! "); } }
В классе Program
определен метод Main
, в теле которого находится код:
ArrayList a = new ArrayList();
a.Add(new A()); a.Add(new B()); a.Add(new C());
for (int i=0; i<a.Count; i++)
if(a[i] is A)
((A)a[i]).Show();
Укажите результат вывода после запуска программы на компиляцию и выполнение:
(1) SOS! ВСЕМ! УРА!
(2) генерируется исключение, так как невозможно преобразовать типы ссылок
(3) SOS! SOS! SOS!
(4) SOS! ВЕМ! SOS!
(5) SOS! SOS! УРА!
Программа разрабатывалась для заполнения таблицы автомобилей и вывода их марок на консоль:
using System;
using System.Collections;
class Program
{
public static void Main()
{
Hashtable tab = new Hashtable();
tab.Add("Тип1", 2111);
tab.Add("Тип2", 2101);
foreach (string ob in tab.Keys) Console.Write(tab[ob] + " ");
}
}
Среди перечисленных ниже кодов укажите все коды, подстановка каждого из которых вместо знаков подчеркивания позволяет получить корректную программу, которая выведет на консоль сообщение 2101 2111
:
(1) string
(2) object
(3) int
(4) short
(5) class
Исходный модуль содержит указание используемых пространств имен System
, System.Collections
. В модуле определен единственный класс Program
c методом Main
, в теле которого находится код:
Queue q = new Queue();
string str = "A2B43";
for(int i=0; i<str.Length; i++)
if(str[i]>='0' && str[i]<='9') q.Enqueue(str[i]);
while(q.Count > 0)
Console.Write(q.Peek());
Укажите результат вывода после запуска программы на компиляцию и выполнение:
(1) A2B43
(2) 243
(3) 342
(4) программа бесконечно выводит на консоль 3
(5) программа бесконечно выводит на консоль 2
Определенный в программе тип делегата
(1) может быть использован в качестве предка при определении делегатов - наследников
(2) должен содержать реализацию вызываемого метода
(3) может размещаться внутри одного из классов программы
(4) может размещаться вне всяких классов программы
(5) должен иметь конструктор без параметров
Программа предназначена для вычисления и вывода квадрата числа 3:
class D { public delegate double F(double x);}
class A { public int F(int x) { return x * x; } }
class B { public static double F(double x) { return x * x; } }
class Program
{
static void Main()
{
______________ ;
System.Console.WriteLine(f(3));
}
}
Среди перечисленных ниже кодов укажите код, подстановка которого вместо знаков подчеркивания позволяет получить корректную программу, решающую эту задачу:
(1) .F f = new F(B.F)
(2) D.F f = new D.F(A.F)
(3) D.F f = new D.F(B.F)
(4) D.F f = new F(B.F)
(5) D.F f = new D.F(new B().F)
Проанализируйте приведенную ниже программу и укажите результат после попытки запустить программу на компиляцию и выполнение:
using System;
class Program
{
static int[] a = new int[] { 10, 30, 20 };
public delegate void F();
public static void R() { Array.Reverse(a); }
public static void S() { Array.Sort(a); }
public static void M() { int buf = a[0]; a[0] = a[a.Length - 1]; a[a.Length - 1] = buf; }
static void Main()
{
F f = new F(S); f += R; f += M; f -= S; f();
for (int i = 0; i < a.Length; i++) Console.Write(a[i]+" ");
}
}
(1) 10 20 30
(2) 10 30 20
(3) 30 20 10
(4) 20 30 10
(5) возникает исключение при попытке обращения по null
-ссылке
Проанализируйте приведенную ниже программу и укажите результат после попытки запустить программу на компиляцию и выполнение:
public delegate void Выдать(ref int a);
class Начисление{
int s = 100;
public event Выдать Зарплата;
public void Начислить() { Зарплата(ref s); }
public void Получите() { System.Console.Write(s); }}
class БумТрест { public static void OnЗарплата(ref int s) { s = s + 10; } }
class БумСтрой { public static void OnЗарплата(ref int s) { s = s - 30; } }
class Совместитель{
static void Main(string[] args) {
Начисление нач = new Начисление();
нач.Зарплата += new Выдать(БумТрест.OnЗарплата);
нач.Зарплата += new Выдать(БумСтрой.OnЗарплата);
нач.Зарплата += new Выдать(БумТрест.OnЗарплата);
нач.Зарплата -= new Выдать(БумСтрой.OnЗарплата);
нач.Получите(); нач.Начислить();} }
(1) 100
(2) 110
(3) 220
(4) 200
(5) возникает исключение при попытке обращения по null
-ссылке
Из приведенных ниже высказываний укажите все истинные высказывания:
(1) внутри catch
-блока могут находиться try
-блоки и соответствующие им catch
-блоки
(2) между try
-блоком и соответствующим ему catch
-блоком может находиться блок finally
(3) блок finally
получает управление, даже если исключение не было возбуждено
(4) если из catch
-блока с помощью оператора goto
передать управление оператору, следующему за блоком finally
, то этот блок finally
выполняться не будет
(5) инструкция throw
используется для обработки исключения вне catch
-блока
Приведенному ниже коду доступно пространство имен System
.
static void Main()
{ long a=0;
Console.Write("Введи целое число:");
try { a = long.Parse(Console.ReadLine()); a=100/a; }
catch (FormatException) { Console.Write ("Неверный формат! "); }
catch (DivideByZeroException) { Console.Write("Делитель=0! "); }
catch (ApplicationException) { Console.Write("Повторите ввод! "); }
catch (Exception) { Console.Write("Программа завершается! "); }
Console.WriteLine("a="+a);
}
Пользователь собирается запустить программу и ввести число 0. Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Делитель=0! Повторите ввод! Программа завершается! a=0
(2) Делитель=0! a=0
(3) Делитель=0!
(4) Делитель=0! Повторите ввод! Программа завершается!
(5) Делитель=0! Программа завершается! a=0
Проанализируйте приведенный ниже код.
static void Main()
{
int a = 100;
try { a = Devide(a); }
finally { System.Console.Write(" Программа завершена!"); }
System.Console.WriteLine(" a=" + a);
}
static int Devide(int b)
{ return 100 / b; }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) программа не выполняется, так как обнаружена синтаксическая ошибка, связанная с тем, что блок finally
не может следовать за блоком try
(2) Программа завершена! a=1
(3) a=1 Программа завершена!
(4) a=1
(5) программа завершится аварийно, так как после try
-блока отсутствует catch
-блок
Приведенному ниже коду доступно пространство имен System
.
class MyExc : ApplicationException
{ public MyException1() : base("Исключение-1") { }
public override string ToString() { return "Исключение-3"; }
public static int Метод()
{ int s = 22;
try { s = s / (s - 22); }
catch (DivideByZeroException)
{ Console.Write("Исключение-2. "); throw new MyExc (); }
return s;
} }
class Test
{ public static void Main()
{ int s=0;
try { s = MyExc.Метод(); }
catch (MyExc ex) { Console.Write(ex); }
Console.WriteLine(" s=" + s);
} }
Укажите результат вывода на консоль после попытки запустить программу на компиляцию и выполнение:
(1) Исключение-2 DivideByZeroException
(2) Исключение-2 Исключение-1 s=0
(3) Исключение-2 MyExc s=0
(4) Исключение-2 MyExc
(5) Исключение-2 Исключение-3 s=0