Я хочу написать минимум функции, чтобы вернуть минимальное значение, которое было отправлено ему между вызовами. Функция может принимать любое количество аргументов, все из которых являются целыми числами в диапазоне от 0 до 100. Конец списка аргументов, переданных функции, представлен -1.Статическая переменная, которая не сохраняет свое значение
Например, если я вошел следующие вызовы в main
:
minimum (90,78,5,20,-1);
minimum (70,40,2,-1);
minimum(40,30,-1);
Первый вызов возвратит 5, так как минимальное значение 90,78,5,20 5. Второй вызов будет возвращать 2, поскольку минимальное значение 5,70,40,2 равно 2 Третий вызов будет возвращаться 2, поскольку минимальное значение 2,40,30 равно 2.
Таким образом, функция minimum
возвращает минимальное число, которое было отправленные ему во всех вызовах, которые произошли до сих пор.
Таким образом, я создал статическую переменную с именем min
, чтобы сохранить значение минимума между вызовами функций.
Вот что я получил:
#include <stdio.h>
#include <stdarg.h>
int minimum(int cnt, ...)
{
static int min;
int cur_min,i;
va_list lst;
va_start(lst,cnt);
cur_min = va_arg(lst,int);
min = cur_min;
printf("min is %d and cur min is %d \n", min, cur_min);
for(i=0; i<cnt; i++)
{
if(cur_min != -1)
{
if(cur_min < min)
{
min = cur_min;
}
cur_min = va_arg(lst,int);
printf("min is %d and cur min is %d \n" , min, cur_min);
}
else
break;
}
va_end(lst);
return min;
}
int main()
{
printf("In Call One: min is %d \n",minimum(90,78,5,20,-1));
printf("In Call Two: min is %d \n", minimum(70,40,2,-1));
printf("In Call Three: min is %d \n", minimum(40,30,-1));
return 0;
}
Но я получаю следующий результат:
In Call Two: min is 2
In Call Three: min is 30
В то время как выход должен быть:
In Call Two: min is 2
In Call Three: min is 2
Похоже, хотя я ve объявила переменную min
с использованием ключевого слова static
, min
не сохраняет свою ценность между вызовами.
Почему и как я могу сделать min
сохранить его значение между вызовами функций?
Обращайте внимание на правильность форматирования кода и удалите ненужные пустые строки. –