Bien... analice el codigo de tu programa y creo que equivocaste tu logica para la badera de salida...
Es decir, en la linea de codigo:
while(q=='y');
lo que estas diciendo es
do //hacer
//estas instrucciones
while//mientras la variable q sea igual a 'y'
osea que se vuelva a repetir el ciclo do... while... solo si la variable q es igual a 'y'... pero ¿es eso lo que quisiste decir?
Ahora... otro punto muy importante, tu estas utilizando la funcion getchar() la cual tiene el inconveniente de que no solo te acepta el primer valor que se teclea, sino que utiliza un buffer para guardar todos los caracteres que se teclean hasta encontrar un enter inclusive el enter tambien se almacena en el buffer como otro caracter mas asi que aunque en tu codigo original teclees 'y' seguido de un enter, en el while se comparara si en igual a y, como el primer caracter tecleado si es 'y' se vuelve a meter al cilclo pero ya no pide que se precione otra tecla pues el buffer no esta vacio todavia... acto seguido se vuelve ejecutar el while comparando ahora el caracter 'n' [que es el traducido como enter por la funcion getchar()] con el caracter 'y' como ahora ya no se cumple la condicion al ser 'n' diferente que 'y' entonces el ciclo termina y nunca ves que se vuelva repetir, aunque si lo hace, pero recuerda, toma como siguiente caracter el que esta contenido en el buffer hasta que este se vacia...
Aqui te agrego el archivo fuente modificado. La linea original:
q=getchar();
fue sistituida por:
q=getch();
con la difereccia que esta fucnion no muestra eco...
En este codigo trate de respetar tu logica original con respecto a la bandera. Por lo tanto el codigo que te adjunto no saldra del ciclo... y estara imprimiendo los valores de la variable cnt siempre y cuando preciones una 'y' en el teclado... si precionas una letra diferente de 'y' el programa terminara de forma correcta.
No intentes precionar una tecla de funcion (opr ejemplo F1) pues aunque no generara error, tal vez te confundas... pero esa es otra historia...
Y con respecto al warning que dices te marcaba, a mi no me marco nada...
Bueno espero no haberte confundido...
Hasta pronto...