Nel programma ci sono alcune incongruenze
Ad esempio scrivi sono stati allocati x elementi nel vettore dove n è il numero immesso dall'utente ma in realtà il tuto vettore è allocato per 100 elementi
Inoltre chiedi prima quanti se ne vogliono inserire ma questo numero serve a poco visto che poi con 999 puoi inserirne di meno
Comunque sia a me cosi funziona.
(Ho dichiarato static il vettore altrimenti quando lo vai a stampare a video, per i valori non immessi, ti appaiono numeri a lotto.
#include <stdio.h>
#include <stdlib.h>
#define DIM 100
int main() {
    static int vet[DIM],i=0,n;
    
    printf("Quanti elementi vuoi inserire?: ");
    scanf("%d",&n);
    printf("Sono stati allocati %d elementi nel vettore\n",n); // veramente sono 100    
    do
    {
        printf("Inserisci un nuovo valore o il valore 999 per terminare ");
        scanf("%d",&vet[i]);
        i++;  
    }
    while(i<n && vet[i-1]!=999);
        
    /*stampare il vettore*/
    for(i=0;i<n;i++){
        printf("Valore vet[%d]: %d\n",i,vet[i]);
    }
    return 0;
}