{
float max;
if(a>b) max = a;
else max = b;
printf (“\n %4.1f”, max);
}
Int main()
{ float x, y;
scanf(“%f%f”,&x,&y);
f_max(y, x);
}
2. Функция имеет определенный тип (не void). Вызов не является самостоятельным оператором. Он записывается внутри другого оператора или выражения (присваивания, if, printf,...):
b = name (факт_арг1, факт_арг2,...);
Пример 6.2 составить функцию, которая определяет большее значение из двух заданных f = max(x, y) и распечатать результат в основной программе.
float fmax (float a, float b)
{
float max;
if(a>b) max = a;
else max = b;
return max;
}
void main()
{
float x, y, z;
scanf(“%f%f”,&x,&y);
z =fmax(y, x);
printf(“\n%4.1f”, z);
}
Месторасположение описания функций
Описание функции может быть записано до или после функции main(), но не в середине:
Описание функции до основной программы
/*описание функции*/
void myfun (int x, int y)
{
...
}
/*основная программа*/
int main()
{...
/*вызов функции*/
myfun (x, y);
...
}
При этом ничего дополнительно не надо записывать, потому что компилятор сначала рассматривает функцию myfun(), а потом основную программу main().
2 )Описание функции идет после основной программы
/*объявление прототипа функции (указание заголовка)*/
void myfun (int x, int y);
/*основная программа*/
int main()
{...
/*вызов функции*/
myfun (x, y);
}
/*описание функции*/
void myfun (int x, int y)
{
...
}
В этом варианте в начале программы надо выполнить указания на функцию, в роли которого выступает имя, или прототип функции.
Варианты описания и использования функций
Функция возвращает результат через имя.
ü В описании функции указывается определенный тип результата, возвращаемого функцией, - int, float, double, char...
ü Внутри функции организуется локальная переменная, тип которой совпадает с типом функции.
ü Внутри функции должен быть оператор return a, где а -выражение для вычисления значения результата.
ü Вызов такой функции не является самостоятельным оператором. Он записывается внутри другого оператора.
Пример 6.3. Написать программу, которая использует функцию для вычисления выражения z = f (x, a, y) для двух вариантов значения переменных а и х.
для входных данных: 1) x =5.3; a =-2.1 2) x =3.7; a =7.6
Текст программы:
/*Описание функции fz */
Float fz (float x, float a)
{
float y;
y=1.7*log(fabs(x+2.5*a));
if(a>=x) return(a*exp(y*sin(2*x)));
else return(2.9*cos(a*y));
}
/*Основная функция main() */
Void main()
{
float d,h;
d=fz(5.3,-2.1); /*вызов функции fz */
h=fz(3.7, 7.6); /*вызов функции fz */
printf(“x=5.3, a=-2.1, d=%3f\n”,d);
printf(“x=3.7, a= 7.6, h=%3f\n”,h);
printf(“fz(6.5,-3.4)=%3f\n”,fz(6.5,-3.4));
}
Пример 6.4. Написать программу, которая использует функцию для нахождения большего значения из трех переменных. Результат вернуть через имя.
Текст программы:
/* Описание функции fmax */
float fmax(float x, float y, float z)
{
float max;/* Описание локальной переменной */
if (x>y) max=x; else max=y;
if (z>max) max=z;
return max;
}
/* Основная функция main() */
void main()
{
float a,b,c,rez;
scanf("%f%f%f", &a,&b,&c);
rez=fmax(a,b,c);/* вызов функции fmax */
printf("\n rez= %7.1f ",rez);
}






