1
ЯЗЫК ПРОГРАММИРОВАНИЯ СИ
Представлен материал, который имеет отношение к основам программирования на алгоритмическом языке СИ (алфавит, операции, операторы, комментарии и другие элементы). Приводятся примеры программ, иллюстрирующие применение основных операторов СИ.
Примеры использования операторов языка СИ
Рассмотрим применение операторов языка СИ на конкретных примерах решения различных задач.
Задача 1. Вычислить координаты центра тяжести трех материальных точек с массами m1, m2, m3 и координатами (x1, y1), (x2, y2) и (x3, y3) по формулам: x=(x1*m1+x2*m2+x3*m3)/(m1+m2+m3); y =(y1*m1+y2*m2+y3*m3)/(m1+m2+m3) .
Алгоритм ее решения имеет линейную структуру и соответствующая блок-схема имеет вид:
2
Рис. 1. Блок-схема алгоритма
3
Программа 1:
#include
#include
void main (void)
{
float m1, m2, m3, m, x1, x2, x3, x, y1, y2, y3, y;
clrsrc ();
printf ("Введите m1, m2, m3: ");
scanf ("%f %f %f",&m1,&m2,&m3);
printf ("Введите x1,y1,x2,y2,x3,y3: ");
scanf ("%f %f %f %f %f %f",&x1,&y1,&x2,&y2,&x3,&y3);
m = m1+m2+m3;
x = (m1*x1+m2*x2+m3*x3)/m;
y = (m1*y1+m2*y2+m3*y3)/m;
printf ("\nx = %f y = %f",x,y);
}
4
Задача 2. Определить, попадает ли точка с координатами (x0, y0) в круг
радиуса r. Уравнение окружности . Вывести на печать сообщение:
точка попадает внутрь круга; точка не попадает внутрь круга.
Из анализа алгоритма решения поставленной задачи следует, что вопрос о
выводе того или иного сообщения зависит от значения логического выражения:
Блок-схема алгоритма решения сформулированной ранее задачи приведена на
рис. 2.
5
Рис. 2. Блок-схема алгоритма
6
Программа 2:
#include
#include
#include
void main (void)
{
float x0, y0, r;
clrsrc ();
printf ("Введите x0,y0,r: ");
scanf ("%f %f %f", &x0,&y0,&r);
if (pow(r,2)
printf ("Точка попадает внутрь круга");
else
printf ("Точка не попадает внутрь круга");
}
7
Задача 3. Округлить действительное положительное число x, меньшее 5, до
ближайшего целого числа:
Анализ алгоритма решения задачи показывает, что необходимо использовать
вложенные операторы условия. Блок-схема алгоритма представлена на
следующем рисунке.
8
Рис. 3. Блок-схема
9
Программа 3:
#include
#include
void main (void)
{
float x;
int nx;
clrsrc();
m1:printf ("Введите x = ");
scanf ("%f",&x);
if ((x=5))
goto m1;
else
{
if (x
{
nx=0;
goto m2;
}
else
=0.5)&&(x { nx=1; goto m2; } else if ((x=1.5)&&(x { nx=2; goto m2; } else if ((x=2.5)&&(x { nx=3; goto m2; } else " width="640"
10
if ((x=0.5)&&(x
{
nx=1;
goto m2;
}
else
if ((x=1.5)&&(x
{
nx=2;
goto m2;
}
else
if ((x=2.5)&&(x
{
nx=3;
goto m2;
}
else
=3.5)&&(x { nx=4; goto m2; } else nx=5; m2: printf ("\nnx = &d",nx); } } Задача 4. Дано действительное число x. Вычислить с точностью =0.000001 сумму и указать количество учтенных слагаемых: Данная задача решается с помощью операторов цикла. Необходимо ввести значения величины x и точности . Выделить переменную для вычисления суммы и еще одну переменную для определения количество учтенных членов ряда. Суммирование прекращается если прибавляемое слагаемое по модулю будет меньше точности . Блок схема алгоритма имеет вид " width="640"
11
if ((x=3.5)&&(x
{
nx=4;
goto m2;
}
else
nx=5;
m2: printf ("\nnx = &d",nx);
}
}
Задача 4. Дано действительное число x. Вычислить с точностью =0.000001 сумму и указать количество учтенных слагаемых:
Данная задача решается с помощью операторов цикла. Необходимо ввести
значения величины x и точности . Выделить переменную для вычисления суммы
и еще одну переменную для определения количество учтенных членов ряда.
Суммирование прекращается если прибавляемое слагаемое по модулю будет
меньше точности . Блок схема алгоритма имеет вид
12
Рис. 4. Блок-схема
13
Программа 4:
#include
#include
#include
void main (void)
{
int n;
float a,s,eps,s;
clrsrc ();
printf ("Введите x,eps:");
scanf ("%f %f",&x,&eps);
s = 0;
a = 1;
n = 1;
a = a*x;
eps) { if (n%2!=0) s -= a/n; else s += a/n; n++; a = a*x; } printf ("\nКол-во слагаемых = %d\nСумма = %f",n-1,s); } Задача 5. Написать программу для вычисления и печати таблицы значений функции двух переменных если x [0, 1] и меняется с шагом 0.1, а y [0,3] и меняется с шагом 0.3. При этом константа a=-3.1. " width="640"
14
while (fabs(a)eps)
{
if (n%2!=0)
s -= a/n;
else
s += a/n;
n++;
a = a*x;
}
printf ("\nКол-во слагаемых = %d\nСумма = %f",n-1,s);
}
Задача 5. Написать программу для вычисления и печати таблицы значений
функции двух переменных
если x [0, 1] и меняется с шагом 0.1, а y [0,3] и меняется с шагом 0.3. При этом
константа a=-3.1.
15
Программа 5:
#include
#include
#include
#define PI 3.1415926535
void main (void)
{
float a, x, y, f;
clrsrc ();
printf ("Введите a = ");
scanf ("%f",&a);
for (x=0.0; x
for (y=0.0; y
{
f = a*exp(2*x*y)*cos(0.5*PI+y);
printf ("\nx = %f y = %f f(x,y) = %f",x,y,f);
}
}