What kind of math problems? I'm studing CS, and it's rough at times, but you have to practise a lot. Write some programs for fun. :)
As for maths, I'm no expert, but you could try writing a program to solve some simple maths problems (like
Euclid's GCD, or
Pascal's Triangle)
C is good, I'm learning it myself (a few courses in now), it's a bit more tedious than say Java, for some things (like string processing) but you get the hang them. One thing I've found helpful is to keep a library (.h) file of useful functions that I write, so I can use them later (like clearing the input buffer, a linked list implementation, and various other things).
As for reading your assignment and understanding what's asked. Be systematic when you read it. Note down what your input data is, what format it's in, what variables you might need to store this data, then have a think about what processing is involved, how do I get from the input to the output, what kind of algorithm do you need, and how do I format my output - to the screen, or a file?
I keep a scratch pad handy when I'm nutting out an assignment, it helps me to organise my thoughts.