Ниже краткие ответы на вопросы и готовые примеры к заданиям.
- Операция 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 пропускает оставшуюся часть текущей итерации и переходит к следующей проверке условия цикла (следующая итерация).
- Способы объединения строк
- Конкатенация с оператором +.
- Интерполяция строк: $"Текст {переменная}".
- String.Format: String.Format("Текст {0}", переменная).
- Наиболее современный, читаемый и менее подверженный ошибкам способ — интерполяция строк (строка начин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, цикл». При необходимости можно реализовать более точную обработку пробелов вручную.