Если нет функции abs (), второй способ (без ветвления):
int num;
printf("Enter num: ");
scanf("%d", &num);
printf("Abs=%d\n", num*(1+(num<0)*-2));
РЕДАКТИРОВАТЬ после комментария от StoryTeller:
Трюк работает, потому что условный тест, такой как «<», возвращает 0 (для false) или 1 (для true). Мы можем развернуть это возвращенное число в более сложном выражении. В этом случае нам нужно выражение, которое возвращает 1 или -1. Если число num НЕ меньше 0, то есть не является отрицательным, «num <0» возвращает 0, а выражение дает 1 + (- 2 * 0) = 1. Число num возвращается без изменений. Если num меньше 0, то есть отрицательно, выражение возвращает -1: 1 + (-2 * TRUE), где значение TRUE равно 1. </p>
Имея теперь 1 или -1 в зависимости от того, что число равно num, простое умножение при необходимости инвертирует знак числа.