Buongiorno, ho provato a creare il codice utilizzando di proposito l'array, e dopo vari tentativi sono riuscito a far partire il programma, il quale tuttavia non funziona e non capisco perchè. 
1)Cosa ho sbagliato?
Di seguito testo del problema e relativo codice:
/*Si scriva un programma in linguaggio C per poter analizzare una sequenza di numeri.
Dati N numeri interi letti da tastiera si vogliono calcolare e stampare su schermo diversi
risultati:
 quanti sono i numeri positivi, nulli e negativi
 quanti sono i numeri pari e dispari.*/
#include <stdio.h>
#include <stdlib.h>
int quantita, i;
int positivi, negativi,nulli,pari,dispari;
int main (){
	int positivi=0;
	int negativi=0; //2 ERRORI IN QUESTA RIGA (solo se uso ciclo For)!?
	int nulli=0;
	int pari=0;
	int dispari=0;
	int i=0;//se uso while devo dichiararlo e inizializzarlo uguale a 0 ?
	
	printf ("inserisci quanti numeri vuoi analizzare");
	scanf ("%d", &quantita);
	int vett[quantita];
	while (i>=0 && i<quantita){ //1 ERRORE IN QUESTA RIGA (solo uso il ciclo FOR)!?
		printf ("inserisci la sequenza da analizzare\n");//qui si riempie l'array
		scanf ("%d", &vett[i]);
		i++;
	}
	while (i>=0 && i<quantita){
	scanf ("%d", &vett[i]);
	if (vett[i]>0){positivi++;}//uso "++"
		else if (vett[i]<0){negativi=negativi+1;}//uso "+1"
		else {nulli=nulli+1;}
	i++;
}
	printf ("positivi %d, negativi %d, nulli %d", positivi, negativi, nulli);
	system ("pause");
	return 0;
}// 5 ERRORI IN QUESTA RIGA(solo se uso il ciclo For)!?
2)Leggete i commenti dentro il codice: inizialmente mi sembrava logico usare il FOR tanto quanto il WHILE, eppure solo con quest'ultimo riesco a creare ed eseguire l' .exe, perchè ?
3)Un'altra domanda: quando uso "i" per un conteggio va dichiarata assieme alle altre "int" e va inizializzata a 0? Oppure è tutto automatico (come se "i" fosse una sorta di keyword)?
Grazie