As others have mentioned, for the second case you will need to implement some sort of spline or (actually a better fit for your example) give the unit some sort of steering behavior.
However, for the first case, there is a solution that is both simpler and gives better results than path smoothing. It's called Theta*, and is a simple (and relatively new) extension of A* on grids that allows units to move in any direction between grid-points.

There is a nice article explaining Theta* (from which I stole the above image) here