First of all. It is important to know about .h (header) files. They should have the following.
Why put this? If you included your header file, say header.h , in several other files, file1.c , file2.c , you would basically repeat the code, that is, the code in header.h will be placed in both files during the compilation process.
With these instructions for the pre-processor, make sure that the header.h code will exist only once in the program.
Now. Where do you post #includes? Well, I suppose that student.h subject.h file and declare the things that are implemented in student.c and subject.c. Therefore, if the classroom.h file uses the things declared in the previous two headers, you need to put #include "student.h" and #include "subject.h" in classroom.h .
If only classroom.c also uses the things declared in the headers, put them only here, but not in classroom.h .
Finally, if both files use things declared in the headers, put #include "student.h" and #include "subject.h" in both files.
Basically you put in files that require a specific (but not implemented) resource in the header. With a heading surrounded by the above code, you can put it in many files and never repeat the code during the compilation process.
About sum() and PI . Same. Create a title with the code above and include it where necessary.
source share