Solutions upper are wrong. You must check next test cases when work with types:
TEST CASE
0 100
20 -21
21 20
2147483647 2147483647
-2147483647 2147483647
-2147483647 -2147483647
#include <stdio.h>
#include <limits.h>
int average(int a, int b) {
    if ( a < 0 && b < 0 ) {
        b -= a;
        b /= 2;
        b += a;
    } else if ( a < 0 ) {
        b += a;
        b /= 2;
    } else if ( b < 0 ) {
        b += a;
        b /= 2;
    } else if ( a > b ) {
        a -= b;
        a /= 2;
        a += b;
    } else {
        b -= a;
        b /= 2;
        b += a;
    }
    
    return b;
}
int main(){
    int a = INT_MAX;
    int b = INT_MAX;
    scanf("%d %d", &a, &b);
    printf("Max INTEGER: %d\n", INT_MAX);
    printf("Avarage INTEGER: %d\n", average(a, b));
    return 0;
}