C# For Dummies
Глава 3. Оператори и изрази
1. Напишете израз, който да проверява дали дадено цяло число е четно или нечетно.
Упътване: Вземете остатъкът от деленето на числото на 2 и проверете дали е 0 или 1 (съответно числото е четно или нечетно). Използвайте оператора % за пресмятане на остатък от целочислено деление.
Решение:
static void Main(string[] args)
{
int number = 23;
bool even = number % 2 == 0 ? true : false;
Console.WriteLine("{0} is even? {1}", number, even);
}
2. Напишете булев израз, който да проверява дали дадено цяло число се дели на 5 и на 7 без остатък.
Упътване: Ползвайте логическо "И" (оператора &&) и операцията % за остатък при деление. Можете да решите задачата и чрез само една проверка – за деление на 35 (помислете защо).
Решение:
static void Main(string[] args)
{
int number = 36;
bool divisible = number % 35 == 0 ? true : false;
Console.WriteLine("{0} is divisible by both 5 and 7? {1}", number, even);
}
3. Напишете израз, който да проверява дали третата цифра (отдясно на ляво) на дадено цяло число е 7.
Упътване: Разделете числото на 100 и го запишете в нова променлива. Нея разделете на 10 и вземете остатъкът. Остатъкът от делението на 10 е третата цифра от първоначалното число. Проверете равна ли е на 7.
Решение:
static void Main(string[] args)
{
int number = 45764;
bool isSeven = (number / 100) % 10 == 7 ? true : false;
Console.WriteLine("Third digit of {0} is 7", number, even);
}
4. Напишете израз, който да проверява дали третия бит на дадено число е 1 или 0.
Упътване: Използвайте побитово "И" върху числото и число, което има 1 само в третия си бит (т.е. числото 8, ако броенето на битовете започне от 0). Ако върнатият резултат е различен от 0, то третия бит е 1.
Решение:
static void Main(string[] args)
{
int number = 452;
Console.WriteLine("The third bit of {0} is 1? {1}", number, ((number >> 3) & 1) == 1);
}
5. Напишете израз, който изчислява площта на трапец по дадени a, b и h.
Упътване: Формула за лице на трапец: S = (a + b) / 2 * h.
Решение:
static void Main(string[] args)
{
float a = 2;
float b = 3;
float h = 1;
Console.WriteLine("S={0}", (a + b) / (2 * h));
}
6. Напишете програма, която за подадени от потребителя дължина и височина на правоъгълник, пресмята и отпечатва на конзолата неговия периметър и лице.
Упътване: Потърсете в Интернет как се въвеждат цели числа от конзолата и използвайте формулата за лице на правоъгълник.
Решение:
static void Main(string[] args)
{
Console.Write("Enter a: ");
int a = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter b: ");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("S={0}, P={1}", a * b, (a + b) * 2);
}
7. Силата на гравитационното поле на Луната е приблизително 17% от това на Земята. Напишете програма, която да изчислява тежестта на човек на Луната, по дадената тежест на Земята.
Упътване: Прочетете число от конзолата, след което го умножете по 0.17 и го отпечатайте.
Решение:
static void Main(string[] args)
{
Console.WriteLine("Enter weight of a man: ");
int weight = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("This person will weight {0}kg on the Moon.", weight * 0.17);
}
8. Напишете програма, която проверява дали дадена точка О (x, y) е вътре в окръжността К ((0,0), 5). Пояснение: точката (0,0) е център на окръжността, а радиусът й е 5.
Упътване: Използвайте питагоровата теорема a2 + b2 = c2. За да е точката вътре в кръга, то x*x + y*y следва да е по-малко или равно на 5.
Решение:
static void Main(string[] args)
{
Console.Write("Enter x: ");
int x = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter y: ");
int y = Convert.ToInt32(Console.ReadLine());
bool isInside = (x * * + y * y <= 5) ? true : false;
Console.WriteLine("The point O({0},{1}) is inside K((0,0),5)?: {2}", x, y, isInside);
}
9. Напишете програма, която проверява дали дадена точка О (x, y) е вътре в окръжността К ((0,0), 5) и едновременно с това извън правоъгълника ((-1, 1), (5, 5). Пояснение: правоъгълникът е зададен чрез координатите на горния си ляв и долния си десен ъгъл.
Упътване: Използвайте кода от предходната задача и добавете проверка за правоъгълника. Една точка е вътре в даден правоъгълник със стени успоредни на координатните оси, когато е вдясно от лявата му стена, вляво от дясната му стена, надолу от горната му стена и нагоре от долната му стена.
Решение:
Link
10. Напишете програма, която приема за вход четирицифрено число във формат abcd (например числото 2011) и след това извършва следните действия върху него:
-Пресмята сбора от цифрите на числото (за нашия пример 2+0+1+1 = 4).
-Разпечатва на конзолата цифрите в обратен ред: dcba (за нашия пример резултатът е 1102).
-Поставя последната цифра, на първо място: dabc (за нашия пример резултатът е 1201).
-Разменя мястото на втората и третата цифра: acbd (за нашия пример резултатът е 2101).
Упътване: За да вземете отделните цифри на числото, можете да го делите на 10 и да взимате остатъка при деление на 10 последователно 4 пъти.
Решение:
Link
11. Дадено е число n и позиция p. Напишете поредица от операции, които да отпечатат стойността на бита на позиция p от числото n (0 или 1). Пример: n=35, p=5 -> 1. Още един пример: n=35, p=6 -> 0.
Упътване: Ползвайте побитови операции.
Решение:
Link
12. Напишете булев израз, който проверява дали битът на позиция p на цялото число v има стойност 1. Пример v=5, p=1 -> false.
Упътване: Задачата е аналогична на предната.
Решение:
static void Main(string[] args)
{
int v = 350;
int p = 350;
int mask = 1 << p;
bool isOne = (v & mask) != 0 ? true : false;
Console.WriteLine("The bit at position {0}of number {1} is 1? {2}", p, v, isOne);
}
13. Дадено е число n, стойност v (v = 0 или 1) и позиция p. Напишете поредица от операции, които да променят стойността на n, така че битът на позиция p да има стойност v. Пример n=35, p=5, v=0 -> n=3. Още един пример: n=35, p=2, v=1 -> n=39.
Упътване: Ползвайте побитови операции, по аналогия със задача 11.
Решение:
static void Main(string[] args)
{
int n = 350;
int v = 0;
int p = 3;
n = (v == 0) ? n = n & (~(1 << p)) : n = n | (1 << p);
Console.WriteLine(n);
}
14. Напишете програма, която проверява дали дадено число n (1 < n < 100) е просто (т.е. се дели без остатък само на себе си и на единица).
Упътване: Прочетете за цикли в Интернет. Използвайте цикъл и проверете числото за делимост на всички числа от 1 до корен квадратен от числото. В конкретната задача, тъй като ограничението е само до 100, можете предварително да намерите простите числа от 1 до 100 и да направите проверки дали даденото число n e равно на някое от тях.
Решение:
static void Main(string[] args)
{
int number = 72;
bool isPrime = true;
if (number > 2)
for (int i = 2; i <= Math.Ceiling(Math.Sqrt(numbber)); ++i)
{
if (number % i == 0) isPrime = false;
}
Console.WriteLine("{0} is prime?: {1}", number, isPrime);
}
15. Напишете програма, която разменя стойностите на битовете на позиции 3, 4 и 5 с битовете на позиции 24, 25 и 26 на дадено цяло положително число.
Упътване: За решението на тази задача използвайте комбинация от задачите за взимане и установяване на бит на определена позиция.
Решение:
Link
16. Напишете програма, която разменя битовете на позиции {p, p+1, …, p+k-1) с битовете на позиции {q, q+1, …, q+k-1} на дадено цяло положително число.
Упътване: Използвайте предната задача и прочетете в интернет как се работи с цикли и масиви (в които да запишете битовете).
Решение:
Link
← Обратно