Let $\sim$ denote equinumerous.
If you are allowed to use the results you have proved in class (I don't see why not) then you already have a majority of the work done for you. For instance, you already said $(a,b)\sim (0,1)\sim \mathbb{R}$ which proves part (a). Similarly, you also know $[a,b]\sim (a,b)\sim (0,1)\sim \mathbb{R}$ proving part (d). It's nice that we can prove these statements without having to mess with bijections directly, but just manipulating the use of equinumerosity.
To deal with the rest of the intervals, you could go one of two ways that don't even involve establishing a bijection. You could use Schroeder-Bernstein and show that there is an injection from a set equinumerous to the reals to the interval in question, and vice versa, or you could use the fact that $A\subset B \subset C$ and $A\sim C$ implies $A\sim B\sim C$. Your choice depends on what you have proved already (if you have only proved Schroeder-Bernstein, you have to use that). I'll give an example for $[a,\infty)$ for both methods.
For Schroeder-Bernstein, simply use the identity function to inject $[a,\infty)$ into $\mathbb{R}$. For the other direction, use something like arctangent to inject $\mathbb{R}$ into a finite interval and then shift that interval into $[a,\infty)$. Note that we could make some easy injections here, but it would have been difficult to figure out a bijection between the two sets.
Using the other result (I don't know what it's called), simply note $[a,b]\subset [a,\infty) \subset \mathbb{R}$ and $[a,b]\sim \mathbb{R}$, so $[a,\infty)\sim \mathbb{R}$. It's easier, but if you haven't proved the result, you should use Schroeder-Bernstein. As far as writing proofs goes, don't reinvent set either each time you go to prove something! Use past results, including more 'distant' common knowledge (like above, that the arctangent function is injective) to proof these things, especially when many of the proofs are similar.