I'll add another example that rarely pops up in declarative/imperative programming discussion: the User Interface!
In C#, you can build an UI using various technologies.
On the imperative end, you could use DirectX or OpenGL to very imperatively draw your buttons, checkboxes, etc... line-by-line (or really, triangle by triangle). It is up to you to say how to draw the user interface.
At the declarative end, you have WPF. You basically write some XML (yeah, yeah, "XAML" technically) and the framework does the work for you. You say what the user interface looks like. It is up to the system to figure out how to do it.
Anyway, just another thing to think about. Just because one language is declarative or imperative does not mean that it doesn't have certain features of the other.
Also, one benefit of declarative programming is that purpose is usually more easily understood from reading the code whereas imperative gives you finer control over execution.
The gist of it all:
Declarative -> what
you want done
Imperative -> how
you want it done