I like how that rain looks, nice job. Snow is a bit jittery, but still good.
If I may make some comments on your code:
You've got a lot of "magic numbers" in multiple places, which are constant literals (100, 160, etc) that would make your code more readable and easier to maintain as either constant variables or compiler definitions.
A simple example, from your code:
int drops = 100;
int save_y[100];
int save_x[100];
int save_speed[100];
It could be easier to do it like this:
const int DROPS = 100;
int save_y[DROPS];
int save_x[DROPS];
int save_speed[DROPS];
#define DROPS 100
is also a way to do this thing.
Then any place you have code which depends on the number of drops you don't have to remember to change, you just change the value of the constant or the compiler macro; saves a lot of headache with larger programs.
You may also want to consider using an array of structures to keep track of the data you have in separate arrays.
Apologies if you already know this stuff, I just felt like pointing it out.