int main()
{
float data=1, avg;
while( data != 0 )
{
cout << "Enter a number: ";
cin >> data; //вводим значение 5
avg = getavg(data); //вызов функции
cout << avg << endl; //результат: 5
cout << "Enter a number: ";
cin >> data; //вводим значение 15
avg = getavg(data); //вызов функции
cout << avg << endl; //результат: 10
}
return 0;
}
//-------------------------------------------------------------float getavg (float newdata)
{
static float total = 0; //статическая переменная размещается в сегменте данных и
static int count = 0; //инициализируется только один раз при первом вызове
count++; //count получает значение 1 при первом вызове функции
//count получает значение 2 при втором вызове функции
total += newdata; //total получает значение 5 при первом вызове функции
// total получает значение 20 при втором вызове функции return total / count;
}
Проанализируйте примеры вызовов функций, обработки возвращаемых значений, использования локальных, глобальных, статических переменных:
//1
#include <stdio.h>
intreset (int); //прототип функции #define HIGH 5 intmain () { int i = HIGH;//локальная переменная i reset (i=i/2); //аргумент получает значение 2, и i изменяет свое значение на 2
//возвращаемое функцией значение пропадает printf (“%d\n”,i); //2 return 0; } intreset (inti) { i = i; return (i); }
#include <stdio.h>
intreset (inti); //прототип функции #define LOW 0 #define HIGH 5 int i = LOW; //глобальная переменная i intmain () { int i = LOW; //локальная переменная i i = reset (i/2); //аргумент i/2 получает значение 0, а и i изменяет свое значение // на значение 5, возвращаемое из функции reset printf (“%d\n”,i); //5 return 0; } intreset (inti)//локальная переменная i { i = HIGH; return (i); }
//4 #include <stdio.h> intreset (inti); //прототипы функций intworkover (inti); #define LOW 0 #define HIGH 5 #define CHANGE 2 int i= LOW; //глобальная переменная i intmain () { auto int i = HIGH; //локальная переменная i reset (i/2); //вызов функции с аргументом 2, i свое значение не изменяет //возвращаемое функцией значение пропадает reset (i=i/2); //вызов функции с аргументом 2, i изменяет свое значение на 2, //значение, возвращаемое функцией, пропадает printf (“%d\n”, i); //2 i= reset (i/2); //вызов функции с аргументом 1, i изменяет свое значение на //значение 5, возвращаемое функцией workover(i); //вызов функции с аргументом 5
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.