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;
}