- •Додатковий матеріал до лекцій із дисципліни "Програмування"
- •1 Структури та об’єднання
- •1.1 Структури
- •1.2 Об’єднання та бітові поля
- •2 Функції
- •2.1 Передача параметрів за значенням
- •2.2 Передача параметрів за покажчиком
- •2.3 Функції та масиви
- •2.4 Функції з параметрами за замовченням
- •2.5 Функції з змінним числом параметрів
- •2.6 Передача параметрів в функцію main()
- •2.7 Рекурсивні та інлайн-функції
- •2.8 Функції, що повертають покажчик
- •2.9 Функції та структури
- •2.10 Перевантаження функцій та шаблони функцій
- •2.11 Покажчик на функцію
- •3 Робота з файлами
- •3.1 Відкриття та закриття файлів
- •3.2 Введення даних в файл та виведення даних з файлу
- •3.3 Керування файлами та каталогами
- •4 Багатофайлова компіляція
- •Література
2.4 Функції з параметрами за замовченням
Приклад 2.11
#include <stdio.h> |
int def(int a=10, int b=3, int c=4) |
{return a*b+c;} |
int main() |
{int am=2, bm=5, cm=6,res1,res2,res3,res4; |
res1=def(); |
res2=def(am); |
res3=def(am, bm); |
res4=def(am, bm, cm); |
printf(“res1=%d res2=%d ”, res1,res2); |
printf(“res3=%d res4=%d\n”, res3,res4); |
return 0; } |
|
|
Приклад 2.12
#include <stdio.h> |
int sum(int, int=5, int=10); |
void main() |
{int am=20, bm=50, cm=100,s1,s2,s3; |
s1=sum(am); |
s2=sum(am,bm); |
s3=sum(am,bm,cm); |
printf(“s1=%d s2=%d s3=%d\n”,s1,s2,s3); |
return 0; } |
int sum(int a, int b, int c) |
{return a+b+c;} |
|
|
|
2.5 Функції з змінним числом параметрів
Приклад 2.13
#include <stdio.h> |
int sumi(int i,...) |
{int *num=&i; |
int sum=0; |
for(;i;i--) sum+=*(++num); |
return sum;} |
double sumd(int i,double d...) |
{double *ptr=&d; |
double sum=0.0; |
for(;i;i--) sum+=*(ptr++); |
return sum;} |
void main() |
{int a1=10,a2=20,a3=30,s1,s2; |
double d1=5.7, d2=1.2,s3; |
s1=sumi(3,a1,a2,a3); |
s2=sumi(6,1,a2,3,a1,a3,4); |
s3=sumd(4,d1,1.25,d2,2.5); |
printf(“s1=%d s2=%d s3=%.2lfn”, s1,s2,s3); |
} |
|
|
|
Приклад 2.14
#include <stdio.h> |
#define term 0.0 |
double mult(double arg...) |
{double a=1.0,*ptr=&arg; |
if(*ptr==term) return 0.0; |
for(;*ptr;ptr++) |
a*=*ptr; |
return a;} |
void main() |
{double a=2.5,b=2.0,md1,md2; |
md1=mult(a,b,0.3,term); |
md2=mult(0.5,a,4.0,b,1.1,term); |
printf("md1=%.2lf md2=%.2lf\n",md1,md2);} |
|
|
|
Приклад 2.15
#include <stdio.h> |
#include <stdarg.h> |
#define EOL 0.0 |
void func(double...); |
int main() |
{double v1=1.1,v2=2.2,v3=3.3,v4=4.4,v5=5.5; |
func(v1,v2,v3,EOL); |
func(v1,v2,v3,v4,v5,EOL); |
return 0;} |
void func(double arg1...) |
{int num=0; double value=arg1; |
va_list prt; |
va_start(prt,arg1); |
while(value!=EOL) |
{printf(" %.2lf",value); |
num++; |
value=va_arg(prt,double); |
} |
printf("\nПараметров в списке.– %d\n",num); |
va_end(prt);} |
|
|
|
