L'aggiunta del ; è semplicemente una mia preferenza per i cicli vuoti rispetto al {}, ma è del tutto ininfluente. Il nome[i]=0; invece è fondamentale se intendi usare nome con funzioni che richiedono normali stringhe ASCIZ (array di char terminate dal carattere NUL). Nel contesto del programma, a ben vedere, non serve visto che usi nome come una counted string, stampando i caratteri basandoti sul numero di caratteri presenti invece che sul terminatore NUL.