Все у тебя неплохо, окромя одного.
В С аргументы передаются по значению, т.е. max НЕ ВОЗВРАЩАЕТСЯ в главную
Значит надо передать ссылку на max
f1(....... int *);
а вызов f1(...... &max);
Код
[COLOR=#0000ff]void[/COLOR] f1[COLOR=#008000]([/COLOR][COLOR=#0000ff]int[/COLOR] a[COLOR=#008000][[/COLOR]n[COLOR=#008000]][/COLOR],[COLOR=#0000ff]int[/COLOR] i, [COLOR=#0000ff]int[/COLOR] n,[COLOR=#0000ff]int[/COLOR] *max[COLOR=#008000])[/COLOR]
[COLOR=#008000]{[/COLOR]
*max[COLOR=#000080]=[/COLOR][COLOR=#0000dd]0[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000ff]for[/COLOR][COLOR=#008000]([/COLOR]i[COLOR=#000080]=[/COLOR][COLOR=#0000dd]0[/COLOR][COLOR=#008080];[/COLOR]i[COLOR=#000080]<[/COLOR]n[COLOR=#008080];[/COLOR]i[COLOR=#000040]++[/COLOR][COLOR=#008000])[/COLOR]
[COLOR=#0000ff]if[/COLOR][COLOR=#008000]([/COLOR]a[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#000080]<[/COLOR]a[COLOR=#008000][[/COLOR]i[COLOR=#000040]+[/COLOR]1[COLOR=#008000]])[/COLOR]
*max = a[COLOR=#008000][[/COLOR]i[COLOR=#000040]+[/COLOR]1[COLOR=#008000]][/COLOR][COLOR=#008080]; // Тут было перепутано[/COLOR]
[COLOR=#008000]}[/COLOR]
[COLOR=#008000][/COLOR]
Но Андрейка тоже прав