codice:
#include <stdio.h>
#include <stdlib.h>

void pulisciBuffer() {
	while(getchar() != '\n');
}

int main()
{
	int *vet1, *vet2, *somv;
	int n, k;

	do {
		printf("Selezionare la lunghezza n dei due vettori: ");
		scanf("%d", &n);
		pulisciBuffer();
	} while(n < 1);
	
	vet1 = (int *)calloc(n, sizeof(int));
	vet2 = (int *)calloc(n, sizeof(int));
	sumv = (int *)calloc(n, sizeof(int));
	
	printf("Inizializzazione primo vettore.\n");
	for(k = 0; k < n; k++) {
		printf("Inserisci un valore: ");
		scanf("%d", &vet1[k]);
		pulisciBuffer(); 
	}
      
	printf("Inizializzazione secondo vettore.\n");
	for(k = 0; k < n; k++) {
		printf("Inserisci un valore: ");
		scanf("%d", &vet2[k]); 
		pulisciBuffer();
	}



	for(k = 0; k < n; k++)
		somv[k] = vet1[k] + vet2[k];

	printf("Visualizzazione primo vettore.\n\n");
	for(k = 0; k < n; k++) 
		printf(" %5d ", vet1[k]);
	
	printf("\n\nVisualizzazione secondo vettore.\n\n");
	for(k = 0; k < n; k++)
		printf(" %5d ", vet2[k]);
	
	printf("\n\nVisualizzazione vettore somma.\n\n");
	for(k = 0; k < n; k++)
		printf(" %5d ", somv[k]);
	free(vet1);
	free(vet2);
	free(somv);
	getchar();
	return 0;
}
Questo codice è corretto.

Nel tuo codice:
codice:
int vet1[n], vet2[n];
int somv[n];
Inizializzi i vettori senza settare il valore di n, ciò porta a risultati imprevisti! Inoltre dovresti sostituire la dichiarazione di array di lunghezza variabile con l'allocazione dinamica (es. malloc, calloc e free; vedi il codice postato per un esempio).

P.s. io, dopo ogni chiamata a scanf, ho introdotto una funzione che pulisce il buffer, questo perchè scanf non lo fa di default, non è strettamente necessaria, ma siccome tu utilizzavi una scanf un po' ambigua per non uscire dal programma ho sostituito con una getchar, da ciò è risultata la necessità di tenere pulito il buffer

Edit: non ho compilato perchè non ho un compilatore a disposizione, perciò potrebbe esserci qualche errore
Edit2: C'era un errore... Colpa del fatto che ho modificato il codice e non l'ho riscritto