It depends,
Doing a 301 will transfer the search engine/user from Page A to Page B which is fine. However, if Page B and Page C have a similar URL structure like the first example you gave I would recommend using a canonical tag.
I would recommend using a canonical tag in any case, to let the search engine spider know which page you want it to crawl. If the content/URL is very similar on two pages or more I would highly recommend it to avoid duplication.