Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и ОП / 1_Программирование линейных алгоритмов

.doc
Скачиваний:
36
Добавлен:
09.02.2016
Размер:
122.37 Кб
Скачать

2 Варианты заданий к лабораторным работам

2.1 Лабораторная работа №1. Программирование линейных алгоритмов

Цель работы: научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Си в режиме диалога, познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы.

Общие сведения:

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

Простейшая программа на языке Си состоит из заголовка и тела основной функции main(). В заголовке указываются библиотечные файлы, содержащие функции, которые используются в программе. Основная часть программы на Си начинается с оператора void main (), который указывает стартовую точку программы. Структура программы на языке Си выглядит следующим образом:

# include <stdio.h>

# include <math.h>

void main()

{ объявления локальных переменных, констант;

выражения;

функции;

операторы;

}

Функция форматированного вывода printf()

Синтаксис функции:

printf(<управляющая строка>, <список переменных>);

где <список переменных> - перечень идентификаторов переменных, значения которых необходимо вывести на экран.

<управляющая строка> - строка, которая представляет собой заключенный в двойные кавычки список спецификаторов: %i – для ввода целых чисел со знаком, %u – для ввода целых беззнаковых целых, %f – для ввода дробных чисел, %с – для ввода символа, %s – для ввода строки.

Функция форматированного ввода scanf()

Синтаксис:

scanf(<управляющая строка>, <список адресов переменных>);

где <управляющая строка> - строка, которая может содержать только спецификации формата, перечень допустимых значений спецификаций тот же самый, что и для функции printf();

<список адресов переменных> – содержит перечисленные через запятую адреса переменных, вводимых функцией. Адрес переменной указывается символом & и далее идет идентификатор переменной, например, адрес переменной stud обозначается символами &stud.

В Си существует 5 базовых типов данных:

char - символьный тип; int - целый тип; float - тип данных с плавающей точкой; double - тип данных с плавающей точкой удвоенной длины; viod - пустой тип, не имеющий никакого значения.

Задание А

Составить программу вычисления выражения в правой части. Все значения для вычисления ввести с клавиатуры.

Пример

Задание: Вычислить

Математическая модель:

Разбиваем выражение на ряд более простых, вводя новые переменные

Рисунок 2.1.1 -Блок-схема решения задания

Переводим блок-схему на язык С.

Текст программы может иметь следующий вид:

#include <stdio.h>/* подключение библиотечной функции*/

#include <math.h>

void main(void)

{ int x,y; /* объявление целых типов переменных*/

float dop,a,b,c, rezult; /* объявление переменных вещественного типа*/

scanf("%d",&x); /* ввод переменной х*/

scanf("%d",&y); /* ввод переменной у*/

dop=fabs(y-x);

a=pow(x,y+1)+exp(y-1);

b=1+x*fabs(y-tan(z));

c=0.5*pow(dop,2)-pow(dop,3)/3;

rezult=a/b*(1+dop)+c;

printf("%lf", rezult);

getch( ); /* задержка экрана до нажатия любой клавиши */

}

Доработаем программу, так чтобы она обладала некоторым интерфейсом.:

#include <stdio.h>

#include <math.h>

void main(void)

{

int x,y;

float dop,a,b,c, rezult;

scanf("%d",&x);

scanf("%d",&y);

puts(" ЛАБОРАТОРНАЯ РАБОТА N1 - ЛИНЕЙНАЯ ПРОГРАММА ");

puts("============================================");

dop=fabs(y-x);

a=pow(x,y+1)+exp(y-1);

b=1+x*fabs(y-tan(z));

c=0.5*pow(dop,2)-pow(dop,3)/3;

rezult=a/b*(1+dop)+c;

printf("\a\n ОТВЕТ: rezult=%lf", rezult);

printf (“Для завершения нажмите клавишу <Enter>”);

getch( ); /* ЗАДЕРЖКА ДО НАЖАТИЯ ЛЮБОЙ КЛАВИШИ */

}

#include <stdio.h>

#include <math.h>

int main(void)

{

int x,y;

float dop,a,b,c, rezult,z;

puts(" ЛАБОРАТОРНАЯ РАБОТА N1 - ЛИНЕЙНАЯ ПРОГРАММА ");

puts("============================================");

printf ("введите x\nx=");

scanf("%d",&x);

printf ("введите y\ny=");

scanf("%d",&y);

printf ("введите z\nz=");

scanf("%d",&z);

dop=fabs(y-x);

a=pow(x,y+1)+exp(y-1);

b=1+x*fabs(y-tan(z));

c=0.5*pow(dop,2)-pow(dop,3)/3;

rezult=a/b*(1+dop)+c;

printf("\a\n ОТВЕТ: rezult =%lf", rezult);

printf (“Для завершения нажмите клавишу <Enter>”);

getch( ); /* ЗАДЕРЖКА ДО НАЖАТИЯ ЛЮБОЙ КЛАВИШИ */

return 0;

}

Результат выполнения программы:

ЛАБОРАТОРНАЯ РАБОТА N1 - ЛИНЕЙНАЯ ПРОГРАММА ============================================

введите x

x=2

введите y

y=3

введите z

z=1

ОТВЕТ: rezult =6.849254

Варианты задания А

1. Y= 11. Y=

2. Y= 12. Y=

3. Y= 13. Y=

4. Y= 14. Y=

5. Y= 15. Y=)

6. Y= 16.Y=

7. Y= 17. Y=

8. Y= 18. .

9. 19.

10. 20.

Задание Б

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

Варианты задания Б

1. Студент начал решать задачи данного урока программирования, когда электронные часы показывали h1 часов и min1 минут, а закончил, когда было h2 часов и min2 минут. Составьте программу, позволяющую определить, сколько времени студент решал эти задачи. (Будем считать, что задачи решались не дольше суток.)

2. Дано действительное число а. Не пользуясь никакими другими операциями, кроме умножения, получить: а) а4 за две операции; б) а6 за три операции; в) а7 за четыре операции;

3. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное. 

4. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. 

5. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой. 

6. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. 

7. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу. 

8. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b. 

9. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба. 

10. Найти длину окружности и площадь круга заданного радиуса R. В качестве значения Pi использовать 3.14.

 11. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2). В качестве значения Pi использовать 3.14. 

12. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей. 

13. Дана длина окружности. Найти площадь круга, ограниченного этой окружностью. В качестве значения Pi использовать 3.14. 

14. Дана площадь круга. Найти длину окружности, ограничивающей этот круг. В качестве значения Pi использовать 3.14. 

15. Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом alpha при большем основании (угол дан в радианах). 

16. Найти периметр и площадь прямоугольной трапеции с основаниями a и b (a > b) и острым углом alpha (угол дан в радианах).

 17. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2).

18. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.

19. Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление соединения.

20. Дано действительное число а. Не пользуясь никакими другими операциями, кроме умножения, получить: а) а10 за четыре операции;; б) а13 за пять операций; в) а64 за шесть операций.

Контрольные вопросы:

  1. Каковы назначение и возможности системы С?

  2. Как запустить программу на трансляцию и выполнение?

  3. Как записываются операторы начала и конца программы?

  4. Из каких разделов состоит программа на языке С?

  5. В какой последовательности должны быть записаны разделы программы на языке С?

  6. Как записываются операторы вывода на экран в С?

  7. Каково назначение <управляющая строка>?

  8. Перечислите базовые типы данных

14