這是做這件事:
#include <stdarg.h>
#include <limits.h>
int max(int N, ...)
{
int big = INT_MIN;
int i;
va_list args;
va_start(args, N);
for (i = 0; i < N; i++)
{
int x = va_arg(args, int);
if (big < x)
big = x;
}
va_end(args);
return(big);
}
#include <stdio.h>
int main(void)
{
printf("%d\n", max(6, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(5, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(4, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(3, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(2, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(1, 1, 3, 5, 7, 9, 8));
printf("%d\n", max(0, 1, 3, 5, 7, 9, 8));
return(0);
}
你是如履薄冰了一個名爲「最大」被稱爲「最大」函數內部變量。編譯器接受它,但'gcc -Wshadow'警告隱藏全局的聲明。你不能這樣寫一個遞歸的max()。 – 2009-11-05 06:06:45
另外,請注意標準C需要'int main(void)' - main返回一個整數值,而不是無值。 – 2009-11-05 06:10:53