printf("d\n ", (int)cell(s)); ¿Por qué se debe forzar dos veces?
La función Ceil() es doble y el formato de salida debe ser lf.
Si usa el formato de salida d, por supuesto debe usar (int)ceil(s), de lo contrario la salida será incorrecta.
(int) es una conversión forzada.