Вопросы:
1 Каков результат выполнения операции 5 / 2 в C# и почему? Какие арифметические операторы существуют для получения остатка от деления и целочисленного результата?
2 В чем разница между логическими операторами & и &&, | и ? Почему для условных конструкций if рекомендуется использовать короткоцепочные операторы (&&, )?
3 Как работает условный оператор if с блоками else if и else? В какой ситуации выполняется блок else и может ли он существовать без блока if?
4 Опишите структуру цикла for (инициализатор, условие, итератор). Какова роль каждого компонента и в каком порядке они выполняются?
5 В чем ключевое отличие между операторами break и continue при использовании внутри цикла for? Какой оператор полностью прерывает цикл, а какой переходит к следующей итерации?
6 Какие три основных способа объединения строк (конкатенация, интерполяция, String.Format) вы знаете? Какой способ является наиболее современным, читаемым и менее подверженным ошибкам?
7 Как с помощью индексации строки (stringValue[index]) получить первый и последний символ строки, длина которой заранее неизвестна? Что произойдет, если обратиться по индексу, который выходит за границы строки?
Задание 1: Получение расширения файла
Напишите программу, которая запрашивает у пользователя имя файла (например, "document.pdf") и выводит его расширение в нижнем регистре без точки. Если расширения нет (например, "README"), выведите пустую строку.
Используйте: LastIndexOf, Substring, ToLower.
Задание 2: Сокращение строки
Напишите программу, которая обрезает строку до указанной длины (например, 10 символов), и если длина превышена, добавляет в конце ....
Пример: "Очень длинный текст" → "Очень дл...".
Используйте: Length, Substring, конкатенацию строк.
Задание 3: Подсчёт вхождений символа
Напишите программу, которая подсчитывает, сколько раз определённый символ встречается в строке. Регистр имеет значение.
Пример: для строки "Hello" и символа 'l' результат — 2.
Используйте: цикл for, индексацию строки, сравнение символов.
Задание 4: Capitalized Case
Напишите программу, которая преобразует строку так, чтобы каждое слово начиналось с заглавной буквы, а остальные были строчными.
Пример: "heLLo wOrLd" → "Hello World".
Используйте: ToLower, Split, ToUpper, цикл for или foreach, конкатенацию строк.
Ответ нейросети
17 сентября 2025 13:01
Ниже краткие ответы на вопросы и готовые примеры к заданиям.
Операция 5 / 2 и остаток
Результат: 5 / 2 в C# для целочисленных операндов будет 2. Деление целых чисел даёт целочисленный результат, остаток от деления можно получить оператором %.
Операторы:
/ — обычное деление (у целых: целочисленное, у чисел с точкой — вещественное)
% — остаток от деления (модульное деление)
& vs && и | vs ||, и почему короткоцепочные (&&, ||) предпочтительнее в if
& и | могут работать как булевы логические операции, но они не short-circuit: обе стороны вычисляются всегда. Также & и | могут использоваться как битовые операторы для целочисленных типов.
&& и || — это короткоцепочные (short-circuit) логические операторы. При первом аргументе, делающем выражение ложным (для &&) или истинным (для ||), второе выражение не вычисляется. Это важно для побочных эффектов, исключений и повышения производительности.
В условных конструкциях if обычно используют && и ||, чтобы не вычислять ненужные выражения и не вызывать побочные эффекты.
if с else if и else
Блок if выполняется, пока хотя бы одно условие в цепочке if/else if истинно. При первом истинном условии выполняется соответствующий ему блок, остальные ветви пропускаются.
Блок else выполняется только если ни одно из предыдущих условий не оказалось истинным.
else не может существовать без связанного if (он всегда привязан к ближайшему предыдущему if).
Структура цикла for (инициализатор, условие, итератор)
Инициализатор выполняется один раз перед входом в цикл.
Условие проверяется перед каждой итерацией; если оно истинно, выполняется тело цикла.
Итератор выполняется после каждого прохода тела цикла.
Повторяется цикл: условие → тело → итератор → условие и т.д.
break vs continue
break полностью прерывает выполнение цикла (выход из цикла).
continue пропускает оставшуюся часть текущей итерации и переходит к следующей проверке условия цикла (следующая итерация).
Наиболее современный, читаемый и менее подверженный ошибкам способ — интерполяция строк (строка начинaется с $).
Доступ к первому и последнему символу строки
Первый символ: stringValue[0]
Последний символ: stringValue[stringValue.Length - 1]
Важно: если строка пустая (Length == 0), обращение к индексу вызывает исключение IndexOutOfRangeException (или аналогичную ошибку). Всегда проверяйте Length перед доступом к индексам.
Задание 1: Получение расширения файла
Программа запрашивает имя файла и выводит расширение в нижнем регистре без точки; если расширения нет — выводит пустую строку.
Требуется использовать: LastIndexOf, Substring, ToLower.
Пример кода (Задание 1):
using System;
class Program {
static void Main() {
Console.WriteLine("Введите имя файла:");
string fileName = Console.ReadLine();
int dot = fileName.LastIndexOf('.');
string extension = "";
if (dot >= 0 && dot < fileName.Length - 1) {
extension = fileName.Substring(dot + 1).ToLower();
}
Console.WriteLine(extension);
}
}
Задание 2: Сокращение строки
Обрезает строку до указанной длины (например, 10 символов). Если длина превышена, в конце добавляется "...".
Требуется использовать: Length, Substring, конкатенацию строк.
Пример кода (Задание 2):
using System;
class Program {
static void Main() {
Console.WriteLine("Введите строку:");
string s = Console.ReadLine();
int maxLength = 10;
string result = s;
if (s != null && s.Length > maxLength) {
result = s.Substring(0, maxLength - 3) + "...";
}
Console.WriteLine(result);
}
}
Задание 3: Подсчёт вхождений символа
Подсчитать, сколько раз заданный символ встречается в строке. Регистр имеет значение.
Требуется использовать цикл for, индексацию и сравнение символов.
Пример кода (Задание 3):
using System;
class Program {
static void Main() {
Console.WriteLine("Введите строку:");
string s = Console.ReadLine();
Console.WriteLine("Введите символ для подсчета:");
char target = Console.ReadLine()[0];
int count = 0;
for (int i = 0; i < s.Length; i++) {
if (s[i] == target) count++;
}
Console.WriteLine(count);
}
}
Задание 4: Capitalized Case
Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы, а остальные были строчными.
Требуется использовать: ToLower, Split, ToUpper, цикл for/foreach, конкатенацию.
Пример кода (Задание 4):
using System;
using System.Text;
class Program {
static void Main() {
Console.WriteLine("Введите строку:");
string input = Console.ReadLine();
string lower = input.ToLower();
string[] words = lower.Split(' ', StringSplitOptions.RemoveEmptyEntries);
StringBuilder result = new StringBuilder();
for (int i = 0; i < words.Length; i++) {
string w = words[i];
if (w.Length > 0) {
result.Append(char.ToUpper(w[0]));
if (w.Length > 1) result.Append(w.Substring(1));
}
if (i < words.Length - 1) result.Append(' ');
}
Console.WriteLine(result.ToString());
}
}
Примечания:
В Задании 4 можно сохранить и исходные пробелы между словами, но подход с Split и последующим соединением обычно упрощает задачу и соответствует заданию «Split, ToLower, ToUpper, цикл». При необходимости можно реализовать более точную обработку пробелов вручную.
ПО распространяется в виде интернет-сервиса, специальные действия по установке ПО на стороне пользователя не требуются
Вопросы:
1 Каков результат выполнения операции 5 / 2 в C# и почему? Какие арифметические операторы существуют для получения остатка от деления и целочисленного результата?
2 В чем разница между логическими операторами & и &&, | и ? Почему для условных конструкций if рекомендуется использовать короткоцепочные операторы (&&, )?
3 Как работает условный оператор if с блоками else if и else? В какой ситуации выполняется блок else и может ли он существовать без блока if?
4 Опишите структуру цикла for (инициализатор, условие, итератор). Какова роль каждого компонента и в каком порядке они выполняются?
5 В чем ключевое отличие между операторами break и continue при использовании внутри цикла for? Какой оператор полностью прерывает цикл, а какой переходит к следующей итерации?
6 Какие три основных способа объединения строк (конкатенация, интерполяция, String.Format) вы знаете? Какой способ является наиболее современным, читаемым и менее подверженным ошибкам?
7 Как с помощью индексации строки (stringValue[index]) получить первый и последний символ строки, длина которой заранее неизвестна? Что произойдет, если обратиться по индексу, который выходит за границы строки?
Задание 1: Получение расширения файла
Напишите программу, которая запрашивает у пользователя имя файла (например, "document.pdf") и выводит его расширение в нижнем регистре без точки. Если расширения нет (например, "README"), выведите пустую строку.
Используйте: LastIndexOf, Substring, ToLower.
Задание 2: Сокращение строки
Напишите программу, которая обрезает строку до указанной длины (например, 10 символов), и если длина превышена, добавляет в конце ....
Пример: "Очень длинный текст" → "Очень дл...".
Используйте: Length, Substring, конкатенацию строк.
Задание 3: Подсчёт вхождений символа
Напишите программу, которая подсчитывает, сколько раз определённый символ встречается в строке. Регистр имеет значение.
Пример: для строки "Hello" и символа 'l' результат — 2.
Используйте: цикл for, индексацию строки, сравнение символов.
Задание 4: Capitalized Case
Напишите программу, которая преобразует строку так, чтобы каждое слово начиналось с заглавной буквы, а остальные были строчными.
Пример: "heLLo wOrLd" → "Hello World".
Используйте: ToLower, Split, ToUpper, цикл for или foreach, конкатенацию строк.
Ниже краткие ответы на вопросы и готовые примеры к заданиям.
1) Операция 5 / 2 и остаток
- Результат: 5 / 2 в C# для целочисленных операндов будет 2. Деление целых чисел даёт целочисленный результат, остаток от деления можно получить оператором %.
- Операторы:
- / — обычное деление (у целых: целочисленное, у чисел с точкой — вещественное)
- % — остаток от деления (модульное деление)
2) & vs && и | vs ||, и почему короткоцепочные (&&, ||) предпочтительнее в if
- & и | могут работать как булевы логические операции, но они не short-circuit: обе стороны вычисляются всегда. Также & и | могут использоваться как битовые операторы для целочисленных типов.
- && и || — это короткоцепочные (short-circuit) логические операторы. При первом аргументе, делающем выражение ложным (для &&) или истинным (для ||), второе выражение не вычисляется. Это важно для побочных эффектов, исключений и повышения производительности.
- В условных конструкциях if обычно используют && и ||, чтобы не вычислять ненужные выражения и не вызывать побочные эффекты.
3) if с else if и else
- Блок if выполняется, пока хотя бы одно условие в цепочке if/else if истинно. При первом истинном условии выполняется соответствующий ему блок, остальные ветви пропускаются.
- Блок else выполняется только если ни одно из предыдущих условий не оказалось истинным.
- else не может существовать без связанного if (он всегда привязан к ближайшему предыдущему if).
4) Структура цикла for (инициализатор, условие, итератор)
- Инициализатор выполняется один раз перед входом в цикл.
- Условие проверяется перед каждой итерацией; если оно истинно, выполняется тело цикла.
- Итератор выполняется после каждого прохода тела цикла.
- Повторяется цикл: условие → тело → итератор → условие и т.д.
5) break vs continue
- break полностью прерывает выполнение цикла (выход из цикла).
- continue пропускает оставшуюся часть текущей итерации и переходит к следующей проверке условия цикла (следующая итерация).
6) Способы объединения строк
- Конкатенация с оператором +.
- Интерполяция строк: $"Текст {переменная}".
- String.Format: String.Format("Текст {0}", переменная).
- Наиболее современный, читаемый и менее подверженный ошибкам способ — интерполяция строк (строка начинaется с $).
7) Доступ к первому и последнему символу строки
- Первый символ: stringValue[0]
- Последний символ: stringValue[stringValue.Length - 1]
- Важно: если строка пустая (Length == 0), обращение к индексу вызывает исключение IndexOutOfRangeException (или аналогичную ошибку). Всегда проверяйте Length перед доступом к индексам.
Задание 1: Получение расширения файла
- Программа запрашивает имя файла и выводит расширение в нижнем регистре без точки; если расширения нет — выводит пустую строку.
- Требуется использовать: LastIndexOf, Substring, ToLower.
Пример кода (Задание 1):
using System;
class Program {
static void Main() {
Console.WriteLine("Введите имя файла:");
string fileName = Console.ReadLine();
int dot = fileName.LastIndexOf('.');
string extension = "";
if (dot >= 0 && dot < fileName.Length - 1) {
extension = fileName.Substring(dot + 1).ToLower();
}
Console.WriteLine(extension);
}
}
Задание 2: Сокращение строки
- Обрезает строку до указанной длины (например, 10 символов). Если длина превышена, в конце добавляется "...".
- Требуется использовать: Length, Substring, конкатенацию строк.
Пример кода (Задание 2):
using System;
class Program {
static void Main() {
Console.WriteLine("Введите строку:");
string s = Console.ReadLine();
int maxLength = 10;
string result = s;
if (s != null && s.Length > maxLength) {
result = s.Substring(0, maxLength - 3) + "...";
}
Console.WriteLine(result);
}
}
Задание 3: Подсчёт вхождений символа
- Подсчитать, сколько раз заданный символ встречается в строке. Регистр имеет значение.
- Требуется использовать цикл for, индексацию и сравнение символов.
Пример кода (Задание 3):
using System;
class Program {
static void Main() {
Console.WriteLine("Введите строку:");
string s = Console.ReadLine();
Console.WriteLine("Введите символ для подсчета:");
char target = Console.ReadLine()[0];
int count = 0;
for (int i = 0; i < s.Length; i++) {
if (s[i] == target) count++;
}
Console.WriteLine(count);
}
}
Задание 4: Capitalized Case
- Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы, а остальные были строчными.
- Требуется использовать: ToLower, Split, ToUpper, цикл for/foreach, конкатенацию.
Пример кода (Задание 4):
using System;
using System.Text;
class Program {
static void Main() {
Console.WriteLine("Введите строку:");
string input = Console.ReadLine();
string lower = input.ToLower();
string[] words = lower.Split(' ', StringSplitOptions.RemoveEmptyEntries);
StringBuilder result = new StringBuilder();
for (int i = 0; i < words.Length; i++) {
string w = words[i];
if (w.Length > 0) {
result.Append(char.ToUpper(w[0]));
if (w.Length > 1) result.Append(w.Substring(1));
}
if (i < words.Length - 1) result.Append(' ');
}
Console.WriteLine(result.ToString());
}
}
Примечания:
- В Задании 4 можно сохранить и исходные пробелы между словами, но подход с Split и последующим соединением обычно упрощает задачу и соответствует заданию «Split, ToLower, ToUpper, цикл». При необходимости можно реализовать более точную обработку пробелов вручную.