Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Marchenko_N_M_Programmirovanie_na_yazyke_SS-1.pdf
Скачиваний:
31
Добавлен:
20.02.2016
Размер:
1.16 Mб
Скачать

8. ВВОД ДАННЫХ

Приступая к решению задач этого раздела, необходимо знать, что:

для ввода исходных данных с клавиатуры в языке С предназначена функция scanf;

первым параметром функции scanf является управляющая строка, остальные параметры адреса переменных, значения которых должны быть введены;

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

использование имени переменной, а не ее адреса в качестве параметра функции scanf является типичной ошибкой начинающих программистов. Кстати, компилятор эту ошибку не обнаруживает;

в языке С++ объекты имеют заголовочный файл <iostream.h> и стандартный поток ввода с клавиатуры cin.

9. ПРОГРАММЫ С ЛИНЕЙНОЙ СТРУКТУРОЙ

Решая задачи этого раздела, необходимо помнить, что:

программы с линейной структурой являются простейшими и используются, как правило, для реализации простых вычислений по формулам;

в программах с линейной структурой инструкции выполняются последовательно, одна за другой;

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

Ввод

исходных

данных

Вывод

результата

Рис. 1. Структурная схема линейного алгоритма

9

Пример 3. Деление простых дробей

 

 

 

a d

 

 

 

p

a

:

с

 

 

m

.

 

 

b c

 

 

в

 

d

 

 

n

Программа написана на языке С: #include <stdio.h>

void main()

{int a, b, c, d; float p, m, n; printf ("\na="); scanf ("%d", &a); printf ("\nb="); scanf ("%d", &b); printf ("\nc="); scanf ("%d", &c); printf ("\nd=");

scanf ("%d", &d); m=a*d;

n=b*c;

printf ("\nm=%f",m); printf ("\nn=%f",n); p=m/n;

printf ("\np=%f",p);}

Программа написана на языке С++:

#include <iostream.h> void main()

{int a, b, c, d; float p, m, n; cout<<"\na="; cin>>a; cout<<"\nb="; cin>>b; cout<<"\nc="; cin>>c; cout<<"\nd=";

cin>>d;

m=a*d;

n=b*c;

cout<<"\nm="<<m;

cout<<"\nn="<<n;

p=m/n;

cout<<"\np="<<p<<endl;}

10

Пример 4. Операции увеличения и уменьшения на 1 (++ и --)

4.1 Префиксное увеличение на 1

#include <iostream.h> void main()

{ int x=3,y=4,c; c=++x*++y;

cout<<"\nc="<<c;

cout<<"\nx="<<x;

cout<<"\ny="<<y<<endl;}

4.2 Постфиксное увеличение на 1

#include <iostream.h> void main()

{ int x=3,y=4,c; c=x++*y++;

cout<<"\nc="<<c;

cout<<"\nx="<<x;

cout<<"\ny="<<y<<endl;}

4.3 Префиксное уменьшение на 1

#include <iostream.h> void main()

{ int x=3,y=4,c; c=--x*--y;

cout<<"\nc="<<c;

cout<<"\nx="<<x;

cout<<"\ny="<<y<<endl;}

4.4 Постфиксное уменьшение на 1

#include <iostream.h> void main()

{ int x=3,y=4,c; c=x--*y--;

cout<<"\nc="<<c;

cout<<"\nx="<<x;

cout<<"\ny="<<y<<endl;}

10. БИБЛИОТЕКА МАТЕМАТИЧЕСКИХ ФУНКЦИЙ

При вычислении стандартных математических функций, перечисленных в табл. 1, необходимо к программе подключить библиотеку математических функций. Для подключения этой библиотеки используется директива препроцессора #include <math.h>. Здесь math.h – имя заголовочного файла этой библиотеки.

11

Пример 5. Программа вычисления площади треугольника по формуле Герона

S p( p a)( p b)( p c) ,

где a, b, c – стороны треугольника, p – полупериметр треугольника.

#include <stdio.h> #include <math.h>

void main()

{float a,b,c,p,s;

printf ("\na="); scanf ("%f", &a); printf ("\nb="); scanf ("%f", &b); printf ("\nc="); scanf ("%f", &c); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf ("Ploshad=%5.4f\n",s);}

Таблица 1

Математические функции (заголовочный файл math.h)

Функция

Тип аргумента

Тип результата

Обращение

абсолютное значение целого числа

int

int

abs (x)

арккосинус (радианы)

double

double

acos (x)

арксинус (радианы)

double

double

asin (x)

арктангенс (радианы)

double

double

atan (x)

округляет до ближайшего целого, не

double

double

ceil (x)

меньшего x (округляет вверх)

 

 

 

косинус (x в радианах)

double

double

cos (x)

гиперболический косинус

double

double

cosh (x)

экспонента от x – ex

double

double

exp (x)

 

 

 

абсолютное значение вещественного x

double

double

fabs (x)

округляет до ближайшего целого, не

double

double

floor (x)

превышающего x (округляет вниз)

 

 

 

остаток от деления нацело x на y

double

double

fmod (x,y)

выделяет из числа мантиссу и целую

double

double

frexp (double x, int

часть

 

 

*expptr)

преобразует мантиссу и показатель

double

double

ldexp (double x, int exp)

степени в число (противоположна

 

 

 

функции frexp)

 

 

 

логарифм натуральный – ln x

double

double

log (x)

логарифм десятичный – log x

double

double

log10 (x)

разбивает число на целую и дробную

double

double

modf (double x, double

части

 

 

*intptr)

x в степени y – x y

double

double

pow (x,y)

 

 

 

синус (x в радианах)

double

double

sin (x)

гиперболический синус

double

double

sinh (x)

корень квадратный (положительное

double

double

sqrt (x)

значение)

 

 

 

тангенс (x в радианах)

double

double

tan (x)

гиперболический тангенс

double

double

tanh (x)

12

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