Ya que eres nuevo en el foro, te avisaré de que no se hacen tareas. Esto no va de que tu pones tus códigos o tus ejercicios y nosotros te los hacemos. El foro sirve para cuando tienes una duda concreta y a ser posible tienes que poner tus avances para que podamos orientarte mejor.
Java como ya sabrás o deberías saber está totalmente orientado a objetos por lo que es obligatorio crear una clase para tu programa. C, en cambio, no está orientado a objetos (no tiene clases) aunque tiene un "apaño" que son la estructuras (struct). No conviertas cada clase de Java en un struct de C porque no tiene sentido, vas a tener que pensar un poco si deberías crearla o no.
PD: Otra característica de un struct es que todos sus campos son públicos por defecto. No se pueden establecer como privados.
Y para crear un número aleatorio en C se utiliza el siguiente código:
- #include <stdlib.h> // Para las funciones rand() y srand() 
- #include <time.h> // Para la funcion time() 
-   
- int main(){ 
-   // Se establece una semilla que es como un generador de numeros aleatorios. 
-   // Una semilla con un valor x siempre genera los mismos numeros aleatorios en cada ejecucion.  
-   // Para que sea mas aleatorio se usa time(NULL) para usar la hora del sistema y que cambie con cada ejecucion. 
-   
-   int-  numeroAleatorio  = rand();
 
-   // El numero aleatorio esta entre 0 y la constante RAND_MAX. 
-   printf("Numero aleatorio entre %d y %d: %d", 0,-  RAND_MAX ,-  numeroAleatorio );
 
-   
-   // Para obtener un numero entre [a, b): 
-   numeroAleatorio  =-  a  + rand() % (- b -- a );
-   
-   // Para obtener un numero entre [a, b]: 
-   numeroAleatorio  =-  a  + rand() % (- b -- a +1);
- }  
Dicho esto que creo que es lo más diferente entre Java y C, el resto son bucles y operaciones aritméticas básicas que tienes que poder hacerlo tú solo.
Suerte.