Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ 1-3 лабы.rtf
Скачиваний:
32
Добавлен:
01.04.2015
Размер:
2.67 Mб
Скачать

3. Программы линейной структуры

3.1. Арифметические выражения

Арифметические выражения строятся из имен переменных, констант, знаков операций и круглых скобок так, как это принято в математике. При вычислении их значений раньше выполняются операции *,/,%, а затем + и –. Операции одинакового старшинства выполняются слева направо.

Упражнения

Вычислить

  1. 6*2-7 / 3*7 % 2;

  2. 7/2*3-24%10;

  3. (24/8/2+9/4%3)/(2008/1000+3/3/2/2).

Наряду с переменными и константами в арифметические выражения можно включать функции.

При определении значения выражения, прежде всего, вычисляются значения входящих в него функций.

3.2. Примеры программ линейной структуры

1. Для заданного x вычислить значение выражения

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

#include <math.h>

#include <stdio.h>

void main()

{

float x, y;

printf("x="); scanf("%f",&x);

y=(1+1/(1+pow(x,4)))/(12.5+sqrt(1+x*x));

printf("y=%.4f\n",y);

}

2. Дано трехзначное положительное целое число N. Найти сумму цифр.

Обсуждение. Обозначим первую цифру трехзначного числа переменной a, вторую – b, третью - c.

Первую цифру трехзначного числа получим, разделив заданное число на 100 (a=N/100). Вторую цифру получить сложнее. Сначала нужно отбросить первую цифру числа, затем оставшееся двухзначное число поделить на 10 (b=N% 100/10).

Можно сделать иначе – сначала отбросить третью цифру, затем – первую (b=N/10%10). Третья цифра равна остатку, полученному при делении числа на 10 (c=N%10).

#include <math.h>

#include <stdio.h>

void main()

{

int n,a,b,c,s;

printf("n="); scanf("%i",&n);

a=n/100; b=n/10%10; c=n%10;

s=a+b+c;

printf("s=%i\n",s);

}

3. На числовой прямой заданы две точки A и B с координатами x1, x2. Найти расстояние между ними.

Обсуждение. Расстояние между двумя точками на числовой прямой определяется по формуле d=|x2-x1|.

#include <math.h>

#include <stdio.h>

void main()

{

float x1,x2,d;

printf("x1 x2="); scanf("%f%f",&x1,&x2);

d=fabs(x2-x1);

printf("d=%.3f\n",d);

}

Вопросы

  1. Почему при вычислении расстояния d используется абсолютная величина числа?

  2. Почему координаты точек x1, x2 и расстояние между ними d описаны как вещественные числа?

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

Обсуждение. Расстояние между двумя точками на плоскости определяется по формуле .

#include <math.h>

#include <stdio.h>

void main()

{ float x1,y1,x2,y2,d;

printf("x1 y1="); scanf("%f%f",&x1,&y1);

printf("x2 y2="); scanf("%f%f",&x2,&y2);

d=sqrt(pow(x2-x1,2)+pow(y2-y1,2));

printf("d=%.3f\n",d);

}

5. Составить программу вычисления площади S треугольника по заданным длинам его сторон a, b, c.

Обсуждение. Расчет площади треугольника по его трем сторонам проводится по формуле Герона.

где p – полупериметр.

#include <math.h>

#include <stdio.h>

void main()

{

float a,b,c,p,s;

printf("a b c="); scanf("%f%f%f",&a,&b,&c);

p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

printf("S=%.3f",s);

}

6. Даны координаты концов отрезка (x1,y1) и (x2,y2). Найти координаты середины заданного отрезка.

Обсуждение. Нетрудно доказать, что координаты середины отрезка определяются по формулам

#include <math.h>

#include <stdio.h>

void main()

{

float x1,y1,x2,y2,x,y;

printf("x1 y1="); scanf("%f%f",&x1,&y1);

printf("x2 y2="); scanf("%f%f",&x2,&y2);

x=(x1+x2)/2; y=(y1+y2)/2;

printf("x=%.3f y=%.3f",x,y);

}

7. На плоскости даны координаты трех вершин параллелограмма (x1,y1), (x2,y2), (x3,y3). Составить программу определения координат его четвертой вершины (x4,y4), расположенной напротив вершины (x2,y2).

Обсуждение. Известно, что диагонали параллелограмма в точке пересечения (x,y) делятся пополам. Тогда, используя знания предыдущего примера:

x=(x1+x3)/2, y=(y1+y3)/2, x=(x2+x4)/2, y=(y2+y4)/2.

Из последних двух равенств имеем

x4=2x-x2, y4=2y-y2,

где x и y вычисляются по первым двум формулам.

#include <math.h>

#include <stdio.h>

void main()

{

float x1,y1,x2,y2,x3,y3,x4,y4,x,y;

printf("x1 y1="); scanf("%f%f",&x1,&y1);

printf("x2 y2="); scanf("%f%f",&x2,&y2);

printf("x3 y3="); scanf("%f%f",&x3,&y3);

x=(x1+x3)/2; y=(y1+y3)/2;

x4=2*x-x2; y4=2*y-y2;

printf("x4=%.3f y4=%.3f\n",x4,y4);

}

8. В некоторый момент времени часы показывают h часов, m минут, s секунд. Составить программу определения показания часов через k секунд.

Обсуждение. Чтобы определить, сколько прошло часов необходимо получить целую часть деления числа k на 3600 (k/3600). Тогда количество оставшихся секунд будет k=k%3600. Теперь можно определить сколько прошло минут. Для этого разделим нацело k на 60 (k/60). Количество оставшихся секунд будет k=k%60. Теперь вычислим s=s+k. Далее будем учитывать переход секунд на минуты (например, 45+37=82=1 мин 22 сек.), минут на часы и, что 24 часа записывается как 0 часов.

#include <math.h>

#include <stdio.h>

void main()

{

long int h,m,s,k;

printf("h m s="); scanf("%li%li%li",&h,&m,&s);

printf("k="); scanf("%li",&k);

h=h+k/3600; k=k%3600;

m=m+k/60; k=k%60;

s=s+k; m=m+s/60; h=h+m/60;

s=s%60; m=m%60; h=h%24;

printf("h=%li m=%li s=%li\n",h,m,s);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]