Eso sucede porque en el bloque de memoria almacenas los valores leídos con scanf de tipo int, para que las demás funciones tengan el comportamiento esperado las debes modificar en la misma linea: se recibe un puntero de tipo "int *" y se procesan los elementos del bloque como enteros.
Un saludo
Un saludo