Параметры в формате чисел с плавающей точкой.
Числа с плавающей точкой так же легко передавать в качестве параметров функции, как и целые значения.
Параметры в формате чисел двойной длины.
Тип чисел двойной длины double обеспечивает очень большую точность чисел с плавающей точкой. Все функции, описанные в заголовочном файле math.h, получают и возвращают значения типа double. В своих программах вы можете использовать и другие математические функции, перечисленные в табл. 8.1. Для получения более подробной информации вы можете также просмотреть содержимое файла math.h.
Таблица. Математические функции, описанные в заголовочном файле Microsoft math.h
| acos, acosl | Арккосинус |
| asin, asinl | Арксинус |
| atan, atanl | Арктангенс |
| atan2,atan2l | Арктангенс |
| bessel | Функции Бесселя |
| _cabs, _cabsl | Абсолютное значение комплексного числа |
| ceil, ceill | Целочисленное максимальное значение |
| _chgsign | Инвертирование знака |
| _clear87, clearfp | Чтение и сброс слова состояния числа с плавающей точкой |
| _control87, _controlfp | Чтение старого управляющего слова числа с плавающей точкой и установка нового |
| _copysign | Возвращает число x со знаком числа y |
| cos,cosl | Косинус |
| cosh, coshl | Гиперболический косинус |
| _dieeetomsbin | Преобразование IEEE-числа двойной точности в двоичный формат Microsoft |
| Div | Деление одного целого на другое, возвращается частное и остаток |
| _dmsbintoieee | Преобразование Microsoft-числа двойной точности в формат IEEE |
| exp, expl | Степенная функция |
| fabs, fabsl | Абсолютное значение |
| _fieeetomsbin | Преобразование IEEE-числа одинарной точности в двоичный формат Microsoft |
| _finite | Проверка числа с плавающей точкой на бесконечность |
| floor, floorl | Нахождение наибольшего целого, меньшего или равного аргументу |
| fmod, fmodl | Нахождение остатка |
| _fmsbintoieee | Преобразование Microsoft-числа одинарной точности в формат IEEE |
| _fpclass | Возвращает слово состояния с информацией о классе чисел с плавающей точкой |
| _fpieee_flt | Вызов описанного пользователем обработчика исключительных ситуаций для чисел с плавающей точкой IEEE-стандарта |
| _fpreset | Повторная инициализация пакета математических функций |
| frexp, frexpl | Вычисление экспоненциального значения |
| _hypot, _hypotl | Вычисление гипотенузы правильного треугольника |
| _isnan | Проверка числа с плавающей точкой на значение “не число” (NAN) |
| ldexp, ldexpl | Произведение от аргумента |
| Ldiv | Деление одного целого long на другое, возвращается частное и остаток |
| log, logl | Натуральный логарифм |
| log10, log10l | Десятичный логарифм |
| _logb | Выделение показателя числа с плавающей точкой |
| _irotl, _irotr | Сдвиг числа unsigned long int влево или вправо |
| _matherr, _matherrl | Обработка математических ошибок |
| _max, _min | Определение большего или меньшего из двух значение |
| modf, modfl | Деление аргумента на целую и дробную части |
| _nextafter | Определение следующего значения |
| pow, powl | Вычисление значения, возведенного в степень |
| Rand | Получение псевдослучайного числа |
| _rotl, _rotr | Сдвиг числа unsigned int влево или вправо |
| _scalb | Степень числа 2, определяемая аргументом |
| sin, sinl | Синус |
| sinh, sinhl | Гиперболический синус |
| sqrt, sqrtl | Квадратный корень |
| Srand | Инициализация датчика псевдослучайных чисел |
| _status87, _statusfp | Получение слов состояния числа с плавающей точкой |
| tan, tanl | Тангенс |
| tanh, tanhl | Гиперболический тангенс |
Массивы в качестве параметров.
В следующем примере содержимое некоторого массива передается в функцию в качестве параметра, вызываемого по ссылке. В этом случае адрес первого элемента массива передается через указатель.
//08FPNTR.C
/*Программа на С передает функции массив в качестве параметра.
Для передачи информации о массиве используется указатель*/
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <process.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
void voutput(int *pinums);
main()
{
int iyourarray[7]={2,7,15,32,45,3,1};
/* Передать информацию о массиве в функцию */
printf("Send array information to function. \n");
voutput(iyourarray);
printf ("\n\nPress any key to finish\n");
_getch();
return(0);
}
void voutput(int *pinums)
{
int t;
/* Результат равен */
printf("The result is:\n");
for(t=0;t<7;t++)
printf(" #%d %d\n",t,pinums[t]);
}

Обратите внимание на то, что при вызове функции указывается только имя iyourarray.
Также допустимо передать информацию по адресу и для безразмерного массива. В следующем примере показано, как это можно сделать на C++. (Такой же подход возможен и в С.) Информация, содержащаяся в массиве iyourarray, передается путем указания адреса его первого элемента.
81. Использование функций. Аргумент типа void. Символьные параметры. Целочисленные параметры.
Функция — это самостоятельная единица программы, которая спроектирована для реализации конкретной подзадачи.
Функция является подпрограммой, которая может содержаться в основной программе, а может быть создана отдельно (в библиотеке). Каждая функция выполняет в программе определенные действия.
Сигнатура функции определяет правила использования функции. Обычно сигнатура представляет собой описание функции, включающее имя функции, перечень формальных параметров с их типами и тип возвращаемого значения.
Семантика функции определяет способ реализации функции. Обычно представляет собой тело функции.
Определение функции
Каждая функция в языке Си должна быть определена, то есть должны быть указаны:
· тип возвращаемого значения;
· имя функции;
· информация о формальных аргументах;
· тело функции.
Определение функции имеет следующий синтаксис:
ТипВозвращаемогоЗначения ИмяФункции(СписокФормальныхАргументов)
{
ТелоФункции;
...
return(ВозвращаемоеЗначение);
}
Пример: Функция сложения двух вещественных чисел
float function(float x, float z)
{
float y;
y=x+z;
return(y);
}
