Arrays start with 0, not 1. Your for loops go from 1 to, and include, row and col. But, if the user enters a number 10 or higher for the value of row or col, you will be going out of bounds on the array. You should not allow the user to enter a number larger than the array size.
dynamic allocation is the only way in C to produce a user-defined table. You can either do that, or make 'matrix' bigger than the user should ever need, like 100 X 100 (no one is going to type that much stuff into this program). If you have not covered pointers yet, that is probably what is expected.
I usually try my best to keep things at minimal when I'm testing it out, then I change it when done. And yes I am aware of the for loop, I recently changed that.
"T" is usually type, like int, double, string, any class, etc. If you don't have any particular instructions, then it's probably okay to choose some arbitrary type (you chose to make a matrix of integers). Consider doing all this in C++ instead of C; would make a lot of things easier.