Ho trovato l'errore subito. Anche io studio il C all'università, e ho fatto qualche giorno fa un esercizio simile... L'errore sta nella scanf, ora ti spiego...
Tu hai scritto questo: scanf("%d",N);
Manca la "e commerciale", ovvero questa: &.
Quindi dovresti scrivere così: scanf("%d", &N);
La funzione scanf oltre al tipo di carattere e al nome della variabile, richiede anche l'indirizzo di memoria a cui la variabile stessa è allocata.
Quando dichiari una variabile, essa ha uno spazio in memoria che occupa, e la & (in parole semplici) dice al programma che il valore letto da input deve essere memorizzato a partire dall'indirizzo della variabile... Senza questa &, non so come si comporti bene il programma, ma ti salva la variabile in un indirizzo di memoria casuale, quindi la variabile che andrai a usare risulterà vuota o non completamente piena...
PS: Mi fido del fatto che l'algoritmo sia fatto bene, non l'ho controllato, dato che per prima cosa ho trovato l'errore nello scanf.