En C no existeix públic: ni private: todo es público.
Las estructuras no tienen métodos, éstos son funciones de ámbito global que deberán tener como uno de sus argumentos un puntero a la estructura con la que van a interactuar.
Es normal que las funciones hagan referencia en su nombre al tipo de dato con que van a interactuar.
He hecho unos arreglillos para que se trabajen con los datos de la estructura. En tu código original no usabas los datos de la clase, sino unos floats globales y sólo usabas los métodos. De igual forma si se definen en orden oportuno las funciones en un único archivo no hace falta escribir los prototipos.
#include <stdio.h>
typedef struct {
float numeroA;
float numeroB;
float numeroC;
} calificacion;
void calificacion_pedirnumeros(calificacion *cal) {
printf("Escribe el primero numero : "); scanf("%f", &cal
->numeroA
);
printf("Escribe el segundo numero: "); scanf("%f", &cal
->numeroB
);
printf("Escribe el tercer numero: "); scanf("%f", &cal
->numeroC
); }
float calificacion_operacion(calificacion *cal) {
return (cal->numeroA + cal->numeroB + cal->numeroC)/3;
}
void calificacion_mostrar(calificacion *cal) {
printf("El promedio es: %f\n", calificacion_operacion
(cal
)); }
int main() {
calificacion c1;
calificacion_pedirnumeros(&c1);
calificacion_mostrar(&c1);
}