Po pierwsze nie ma sensu używać funkcji malloc dla tablic, po to została stworzona funkcja calloc. Funkcja ta tworzy tablice oraz wypełnia ją zerami. Twój problem polegał na tym że źle został napisane parametry formatujące w scanf. Polecam poczytać o buforze znakowym oraz funkcji fflush.
Proszę bardzo:
#include<stdio.h>
#include<stdlib.h>
int k, g, gv, o;
int i;
int main(){
scanf("%d %d %d %d", &k, &g, &gv, &o);
int *tab=calloc(o,sizeof(int));
for(i=0; i<o; i++)
{
scanf("%d", &tab[i]);
}
for(i=0; i<o; i++)
{
printf("%d ", tab[i]);
}
free ( tab ) ;
tab = NULL ;
return 0;
}