Tu dices:
if(num='-')
printf("nEl numero es negativo.");
Error1 if(num='-')
para compara se usa el operador ==, si utilizas solo el = estas asignando, asi que a num le asignaste '-';
Error2 Asi no se comparan numeros, si comparas
if(num=='-')
realmente estas comparando el varor de la variable entera num, con el valor ascii del caracter '-' es decir escibirlo asi es lo mismo que escribir esto:
if(num==45)
Explicacion de tu resultado
if(num='-')
printf("nEl numero es negativo.");
else
printf("nEl numero es positivo.");
lo primero dentro del if num='-' que como ya te dije seria asignar a num el valor 45, que es el ascii que corresponde al aracter '-', esta operacion siempre devuelve el valor de la asignacion por lo que devuelve 45, recuerda que un if entra por verdadero para cualquier valor diferente de 0, como devolvio 45 entonces entra por verdaero y hace esto:
printf("nEl numero es negativo.");
Esa es la explicaion, para compara como tulo necesitas , debes hacer:
if(num !=0)
...blablabla
if(num >0)//es decir mayor que cero(positivo)
...
blablabla
if(num <0)//o sea menor que cero (negativo)
.-..
blablabla
Logicamente tu arreglas el codigo,pero esta es la idea y la explicacion.
JuanK