Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРС Программирование на Си.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
606.21 Кб
Скачать

Управляющие конструкции

Составной оператор

Последовательность операторов, заключенная в фигурные скобки, называется составным оператором. Как и в языке Паскаль, в Си составной оператор обычно употребляется тогда, когда синтаксис языка требует использова­ния одного оператора, а необходимо написать несколько.

. Условный оператор (полная и неполная формы). Операция ?.

Формат условного оператора следующий: if (выражение) оператор1;[else оператор0;]

Следует обратить внимание на то, что:

- (выражение) должно заключаться в скобки это требование языка;

- значение выражения приводится к целому и рассматривается в соответствии с указанным выше правилом:

нулевое значение - ложь, все остальные значения истина;

- в случае, если выражение истинно, выполняется оператор!, в противном случае ? оператор0;

- точка с запятой после оператора1 ставится в любом случае (вне зависимости от наличия или отсутствия else ).

Ветвления

  1. Заданы числа a и b. Определить, эти числа одного или разных знаков.

  2. Напишите программу-модель анализа пожарного датчика в помещении, которая выводит сообщение «Пожарная ситуация», если температура (ее значение вводится с клавиатуры) в комнате превысила 60ºС.

  3. Рис расфасован в два пакета. Вес первого - m кг, второго – n кг. Составьте программу, определяющую: а) какой пакет тяжелее – первый или второй? б) вес более тяжелого пакета.

  4. Туристы вышли из леса на шоссе неподалеку от километрового столба с отметкой А км и решили пойти на ближайшую автобусную остановку. Посмотрев на план местности, руководитель группы сказал, что автобусные остановки расположены на километре В и на километре С. Куда следует пойти туристам?

  5. Валя и Вера на своем садовом участке собрали А кг клубники. Из них В кг собрала Вера. Кто из девочек собрал клубники больше и на сколько?

  6. Стоимость А метров серой ткани равна В рублей, а стоимость K метров синей ткани равна М рублей. Какая ткань дороже и на сколько?

  7. Первая бригада маляров за t1 час покрасила А м2 стен, а вторая бригада за t2 часа покрасила В м2. У какой бригады производительность труда выше и на сколько?

  8. Турист за день прошел А км. До обеда он шел t часов и прошел 20 км. Еще t2 часа он шел после обеда. Когда скорость туриста была выше: до обеда или после обеда?

  9. Тело имеет массу М г и объем V см3. Будет ли оно плавать в жидкости, объем которой равен V1 см3, а масса М1 г? (Указание: найдите плотности тема и жидкости, а затем сравните их).

  10. Валя и Вера собрались варить варенье из А кг смородины. По рецепту на 2 кг ягод нужно 3 кг сахара. Валя сказала, что им потребуется С кг сахара, а Вера - что Р кг. Кто из них прав?

  11. Масса 8 литров бензина 5,68 кг. Цистерна имеет объем 500 м3. Хватит ли ее, чтобы вместить А т бензина?

  12. Кусок медного провода длиной 5 м имеет массу 430 г. чтобы провести проводку в квартире требуется С метров. Хватит ли для этой цели мотка провода массой М г?

  13. Смекалкин, уходя в школу, вышел из дому на 3 минуты позже младшего брата. Расстояние до школы S метров. Смекалкин идет со скоростью V1 м/мин, а его брат – V2 м/мин. Догонит ли Смекалкин брата, прежде, чем тот придет в школу?

  14. Составьте программу, проверяющую, верно ли , что введенное вами целое число является четным.

  15. Составьте программу, проверяющую, верно ли , что введенное вами целое число делится без остатка на 3.

  16. Составьте программу, проверяющую, верно ли утверждение, что сумма цифр введенного вами целого числа является четным.

  17. Составьте программу, проверяющую, верно ли , что сумма цифр введенного вами целого числа делится на 5.

  18. Составьте программу, определяющую, пройдет ли график функции y = 5x2 – 7 x + 2 через заданную точку с координатами (a,b).

  19. Даны три действительных числа a, b, c. Найти наибольшее из них.

  1. Фермер намерен купить корову, дающую не менее L литров молока ежедневно с жирностью не менее K процентов. Написать алгоритм и программу выбора коровы.

  2. Написать алгоритм и программу проверки, является ли данный четырехугольник параллелограммом.

  3. Гнездо для ножки деревянной кровати имеет форму прямоугольной вырезки. Определить, подойдет ли данный четырехугольный брусок для этого гнезда.

  4. Стороны одного прямоугольника равны A и B. Стороны другого равны X и Y. Написать алгоритм и программу проверки прямоугольников на равенство.

  5. Цилиндрическая деталь должна иметь длину LO и диаметр DO. Допуски равны соответственно XL и XD. Определить, удовлетворяет ли норме изготовленная деталь.

  6. Занятия в начальных классах отменяются в тех случаях, когда температура воздуха не выше –25 градусов, а также при ветре не менее 7м/с и температуре не выше – 20 градусов. По утренней сводке погоды определить, пойдут ли дети в школу.

  7. Стороны одного треугольника равны A1,B1,C1. Написать алгоритм и программу проверки равенства ему другого треугольника.

  8. Нормальный пульс человека 60 ударов в минуту, давление 120 на 80. При отборе в школу космонавтов допуск по пульсу равен –1, +3; допуск по нижнему значению давления 3, по верхнему - +5. Определить, пройдет ли медкомиссию данный претендент.

  9. Поместятся ли две одинаковые книги в кейс размерами X< Y <Z? ( Размеры книги задавать в порядке возрастания.)

  10. В компьютер поступают результаты соревнований по плаванию для трех спортсменов. Выбрать и напечатать лучший результат.

  11. Известна заработная плата сотрудника. Вычислить величину подоходного налога.

  12. Для конкурсного отбора манекеншиц приглашаются девушки не ниже 180 см. Оределить, будет ли допущена Таня к участию в конкурсе.

  13. Здоровый щенок играет не менее 8 часов в день. Напишите программу, которая определяет, здоров ли щенок по кличке Пуджик.

  14. Определить, имеет ли функция Y = SIN (X) корень на отрезке X,X+1. Подсказка: если функция имеет корень на данном интервале, то ее значения на его границах имеют разные знаки.

  15. Скорость на участке дороги должна быть не выше 30 км/ ч. Определить, нарушил ли водитель правила дорожного движения.

  16. По заданным значениям одного из сопротивлений цепи и ее полного сопротивления определить, имеет ли место в данной цепи параллельное соединение проводников.

  17. Из одной точки к прямой проведены перпендикуляр и наклонная. По длинам отрезков определить, который из них перпендикуляр.

  18. Хватит ли в баке автомобиля бензина, чтобы доехать до ближайшей заправочной станции?

  19. Измеряя промежутки времени между вспышкой молнии и раскатом грома, определить, удаляется или приближается гроза?

  20. Мышонок Джерри улепетывает к своей норке по прямой. Успеет ли кот Том догнать Джерри, если Джерри находится как раз на полпути между Томом и норкой?

  21. Каждое утро майор Знаменский заходит в тир и делает 5 выстрелов через плечо. Если он набирает 50 очков, то вечером идет с Зиночкой в ресторан, а если меньше, то на тренировку в тир. Написать программу, которая распечатывает планы майора на вечер.

  22. Написать программу, которая бы запрашивала целое число и распечатывала любое его значение, кроме13. Если заданное число равно13, вместо него печатается число 77.

  23. Написать программу, которая бы запрашивала возраст мужчины и сообщала, сколько лет ему осталось до пенсии, либо что он уже пенсионер.

  1. Даны три действительных числа a, b, c. Определить, являются ли они последовательными членами арифметической последовательности.

  2. a, b, c, d -длины сторон выпуклого четырехугольника. Проверить, можно ли в него вписать окружность.

  3. Найти значение выражения: а) 1 ; б) 5 .

x-5 (x-7)(x+3)

  1. Даны коэффициенты квадратного уравнения a,b,c. Найти действительные корни этого уравнения.

  1. Известны площадь круга S1 и площадь квадрата S1. Определить: поместится ли квадрат в круг?

  2. Известны площадь круга S1 и площадь квадрата S1. Определить: поместится ли круг в квадрат?

  3. Заданы размеры прямоугольного отверстия A,B и размеры кирпича X,Y,Z. Определить, пройдет ли кирпич в отверстие. Замечание: задачу решать в предположении, что A>B, X>Y>Z.

  1. Можно ли прямоугольный пакет размерами A,B,C положить в чемодан размерами X,Y,Z?

  1. Составить программу вычисления значения функций:

а ) б) в) г)

1 при x 0; x2 при x>0; 1 при x1; x-1 при x>1;

y= у= у= 0 при -1<x<1; y= 0 при -1 x 1;

0 при x<0; - x при x0; -1 при x -1; x+1 при x <-1.

  1. Составить программу, задающую загадки и анализирующую ответы.

  2. Даны координаты двух точек A(x1,y1) и B(x2,y2) в прямоугольной системе координат. Какая из этих точек находится дальше: а) от начала координат? б) от окружности данного радиуса с центром в начале координат?

  3. Даны длины трех отрезков a, b, c. Если можно построить треугольник по этим трем отрезкам, то вычислить его периметр и площадь.

  4. Даны три числа x, y, z. Найти а) max (x+y+z, xyz)+3, б) min (x2+y2, y2+z2)-4.

  5. Составить программу для решения уравнения ax = b, где a и b - заданные действительные числа.

  6. Составьте программу, которая по трем введенным вами числам определит, могут ли эти числа быть длинами сторон треугольника, и если да, то определить вид этого треугольника (остроугольный, прямоугольный или тупоугольный).

  7. Составить программу для решения неравенства ax<b, где a и b - любые действительные числа.

  8. Ракета запускается с точки на экваторе и развивает скорость v км/с. Каков результат запуска? Замечание: если v<=7.8 км/с, то ракета упадет на Землю, если 7.8<v<11.2, то ракета станет спутником Земли, если 11.2v16.4, то ракета станет спутником Солнца, если v>16.4, то ракета покинет Солнечную Систему.

  9. Напишите программу, которая анализирует человека по возрасту и относит к одной из четырех групп: дошкольник, ученик, работник, пенсионер. Возраст вводится с клавиатуры.

  10. Составьте программу, которая по введенному вами k – числу грибов, печатает фразу «Мы нашли в лесу k грибов, причем согласовывает окончание слова «гриб» с числом k.

  11. Составьте программу, которая для целого числа k (от 1 до 99), введенного вами, напечатает фразу «Мне k лет», при этом в нужных случаях слово «лет» заменяя на слово «год» или «года».

  12. Составьте программу, определяющую, входит ли введенная вами цифра в десятичную запись введенного вами трехзначного числа.

  13. Даны координаты центров двух окружностей (X1,Y1) и (X2,Y2), а также их радиусы R1 и R2 (R1>R2). Определить взаимное расположение окружностей.

  14. На плоскости заданы точки M1(X1,Y1), M2(X2,Y2), N1(X1,Y1), N2(X2,Y2). Проверить, являются ли параллельными прямые M1M2 и N1N2. Если прямые пересекаются, то найти их точку пересечения.

  15. Найти координаты точек пересечения прямой y=kx+b и окружности радиуса R с центром в начале координат. Определить, сколько точек пересечения находится во II координатной четверти.

  16. Написать программу нахождения корней биквадратного уравнения с коэффициентами a, b, c.

  17. В ыяснить, принадлежит ли точка с координатами (x,y):

  • кругу единичного радиуса с центром в начале координат;

  • кольцу с центром в начале координат с внешним радиусом 3 и с внутренним радиусом 2,5.

  1. К финалу конкурса лучшего по профессии «Специалист электронного офиса» были допущены трое: Иванов, Петров и Сидоров. Соревнования проходили в три тура. Иванов в первом туре набрал m1 баллов, во втором – n1, а в третьем – p1. Петров - соответственно m2, n2, p2; Сидоров – m3, n3, p3 баллов. Составьте программу, определяющую: а) сколько баллов набрал победитель; б) фамилию победителя.

  2. Дан номер года. Найти число дней в этом году. Указание. В современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех, которые делятся на 100 и не делится на 400. Например, 1900 год - не високосный, 2000 год - високосный.

  3. Даны натуральные n, m (n < m). Определить, сколько среди чисел n, n+1, …, m таких, которые являются номерами високосных годов. Воспользуйтесь указанием к предыдущей задаче.

  4. С клавиатуры вводится шестизначный номер трамвайного билета. Определить, является ли билет счастливым.

Тема: "Алгоритмы ветвления"

Все программы должны содержать проверку на правильность вводимой информации.

1 уровень (3 балла за одну задачу)

  1. Определить, принадлежит ли точка с заданными координатами (х, у) фигуре Q, если координаты любой точки области Q удовлетворяют неравенствам:

y>=x*x-2 и y<= x*x.

  1. Перераспределить значения переменных X и Y так, чтобы в X оказалось большее из этих значений, а в Y - меньшее.

  2. Даны три действительных числа А, В, С. Определите, сколько среди них отрицательных.

  3. Написать программу решения линейного алгебраического уравнения с произвольными параметрами: A*X+B=0.

  4. Вводятся оценки за контрольные работы по физике и математике. Выведите на экран фразы: "МОЛОДЕЦ", если их сумма равна или больше 9, в противном случае выведите "ПОДТЯНИСЬ".

  5. В школу танцев принимаются юноши и девушки, имеющие рост не ниже 168 см и не выше 178 см. Их вес должен соотноситься с ростом по формуле: ВЕС <= РОСТ – 115 Определите будет ли принят поступающий в школу.

  6. Задан проходной балл. Запрашиваются оценки абитуриента на 4 экзаменах и сообщается о результате приема в институт.

  7. Проверьте, делится ли числа A на число B без остатка (числа A и B вводятся).

2 уровень (4 балла за одну задачу)

  1. Написать программу решения квадратного алгебраического уравнения с произвольными параметрами: a x2 + b x + c=0.

  2. Написать программу "Калькулятор", умеющую производить 4 арифметических действия (сложение, вычитание, умножение, деление) над произвольной парой действительных чисел.

  3. Программа спрашивает сокращенное имя, а выдает полное (например, Саша - Александр) для четырех ваших знакомых. Ввод незнакомого имени должен провоцировать заявление типа: "Я с вами не знаком".

  4. Написать программу, которая требует ввода времени дня и, в зависимости от введенного значения, желает доброго утра, доброго дня, доброго вечера или спокойной ночи.

  5. Даны произвольные числа A, B, C. Определить, можно ли построить треугольник с такими сторонами? Какой это треугольник: равнобедренный, равносторонний, прямоугольный.

  6. В овощной магазин поступило С тонн капусты. Магазин имеет два склада: вместимость первого – А тонн, второго – В тонн. В первом складе находится А1 тонн капусты, во втором – В1 тонн. Определить количество капусты в каждом складе после поступления.

  7. По номеру Y ( Y > 0 ) некоторого года определить C - номер его столетия (учесть, что, к примеру, началом ХХ столетия был 1901, а не 1900 год).

  8. Известно расстояние до каждого из трех сел от районного центра. Определить, какое из них находится ближе всего к районному центру, а какое дальше всего от него.

3 уровень (5 баллов за одну задачу)

  1. В киоске продается газета стоимостью 250 руб. и журнал стоимостью 900 руб. Составить программу, которая спрашивает о желании покупателя (журнал или газета?), принимает деньги (сумма денег вводится с клавиатуры) и выдает на экран причитающуюся сдачу.

  2. Проверить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами х, у. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.

  3. Пассажирский самолет может поднять груз общим весом 30 т. Составить программу для определения веса почтового груза, который можно поместить в самолет после посадки пассажиров и загрузки их багажа. Во время регистрации пассажиров ПЭВМ должна подсчитывать количество пассажиров (условный вес одного человека 100 кг) и суммировать вес багажа.

  4. В обращении имеются 1, 2, 5, 10, 20, 50 рублевых монет. Написать программу, определяющую сдачу наименьшим количеством монет. Для определения размера сдаваемой сдачи сначала определить, сколько требуется для этого монет 50-рублевого достоинства, затем 20, 10, 5, 2, 1, пока необходимая сумма не будет набрана.

  5. Определить кратно ли четырехзначное натуральное число N числу 3. Использовать при этом следующее свойство: если сумма цифр числа кратна 3, то и число кратно 3.

  6. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое – номер вертикали (при счете слева на право), второе – номер горизонтали (при счете снизу вверх). Задаются координаты двух. Определить являются ли поля (k, p) и (m, n) полями одного цвета?

  7. Счастливым будем считать такое число из шести цифр, в котором сумма левых трех цифр равна сумме правых трех цифр. Например: 457961 - 4 + 5 + 7 = 9 + 6 + 1 = 16

  8. Задается натуральное число, определяющее возраст человека в годах. Дополнить это число словами «год», «года», «лет». Например, 1 год, 23 года, 45 лет.

  9. Две точки задаются своими координатами. Определить, какая их них находится дальше от:

начала координат; окружности заданного радиуса с центром в начале координат.

Переключатели switch и break

Оператор switch является аналогом case в Паскале По сравнению с case оператор switch имеет несколько особенностей, на которые необходимо обратить внимание, формат его следующий:

switch (выражение)

{ case значение1: последовательность операторов_1;

case значение2 : последовательность_операторов_2 ;

...

case значениеN: последовательность операторовN;

[ default: последовательность операторов DEFAULT] }

Вычисляется значение выражения, которое последовательно сравнивается со значениями, указанными в разделах case. Как только находится подходящее значение, управление передается на соответствующую последовательность_операторов, а вот дальше... выполняются все операторы, расположенные ниже (включая раздел default, если таковой имеется). То есть, начиная с точки входа, тело оператора switch выполняется "насквозь", что неизменно вызывает удивление у тех, кто привык программировать на Паскале. Приведем короткий

пример:

а=3;

switch (a)

{ case 1:printf("один "); printf("l ");

case 2:printf("два "); printf ("2 ");

case 3:printf("три "); printf("3 ");

case 4:printf("четыре "); printf("4 ");

case 5:printf("пять "); printf("5 "};

default: printf("много "); printf("> ");}

В результате выполнения этого оператора на печать будет выведено: "три 3 четыре 4 пять 5 много >". Но это же жутко неудобно, скажете вы! Оператор case в Паскале устроен гораздо удобнее! Ничего подобного! Просто switch более гибок. Для того чтобы прервать его выполнение в любой момент, можно использовать break. Для придания оператору "нормального" вида его надо переписать в виде:

а=3;

switch (a)

{ case 1:printf("один "); printf ("I "); break;

case 2:printf("два "); printf("2 "); break;

case 3:printf("три "); printf("З "); break;

case 4:printf("четыре "); printf("4 "); break;

case 5:printf("пять "); printf ("5 "); break;

default: printf("много "); printf ("> ");}

В этом случае после выполнения соответствующей последовательности операторов мы "вывалимся" из оператора switch (управление будет передано на первый оператор после закрывающей фигурной скобки).

Замечание. К сожалению, в case нельзя задавать диапазон значений. Если в Паскале метка оператора выбора может иметь следующий вид: 1..3,6,9..11, то в Си приходится писать громоздкую конструкцию:

case 1:case 2:case 3:case 6:case 9:case 9:case 10:case 11:

Задачи на оператор выбора

  1. Задан номер месяца, вывести название. Номер задается с клавиатуры.

1* Производить эту операцию несколько раз, пока пользователь не введет "о", сообщать об ошибке, если число >12.

  1. Задано число от 1 до 5. Выдать название оценки («отлично», «хорошо» и т.п.).

*Выдать подряд все оценки с названием разным цветом .

  1. Задается с клавиатуры число от 1 до 3. Вывести числительное среднего рода.

3* Считая число - местом участника соревнований, вывести фамилию участника и рядом через "-" его место. Фамилия и место в числовом виде вводятся с клавиатуры одно за другим (два блока ввода информации).

Пример полученного на экране текста:

Иванов - первое место.

Использовать для слова "место" - строковую константу.

  1. В ответ на введенное число от 0 до 10 выдать сообщение четное это число или нет.

4*То же число для любого целого числа ≤100.

Подсказка: если из числа несколько раз вычитать 10 пока оно не станет ≤10, задача сведется к предыдущей

  1. С клавиатуры вводится число (С=1 7), в ответ выводится название одного из цветов радуги.

(1 - красный, 2 - оранжевый, …)

5*Производить эту операцию несколько раз до тех пор, пока пользователь не введет "0". При С>7 - выдавать "белый", при С<0 - "черный".

  1. С клавиатуры вводится число n от 1 до 7, в ответ выводится название ноты ("до", "ре", "ми" и т. д.).

6*Вывести гамму "до мажор".