Void f_max (float a, float b)

{   

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);

}




double arrow
Сейчас читают про: