Cita: int i, tam1, tam2, vector1[tam1], vector2[tam2];
Esto no me gusta en absoluto para nada. al declarar a tam1 en la misma linea de vector1[tam1], tam1 no sabes que tamaño tiene. puede ser uno, puede ser cero o puede ser tropecientos trillones XDDDD
Prueba dando un valor a tam1 y tam2: int i=0, tam1=10, tam2=10, vector1[tam1], vector2[tam2];
Entonces ahora sabes que vector1 tiene 10 y vector2 tiene 10. ;)
Recuerda que dar un valor inicial a una variable aun que sea cero es buena practica.