Hi Brad_199,
Firstly, the default route:
Switch B is getting the same metric for the default route from both A & C. (It would be easier to see this with the output of 'show ip ospf' and 'show ip ospf link-state', but don't bother re-doing them now.) The routes that A & C are sending to B are external type 2, which don't get different metrics unless you explicitly set them.
So i suggest using 'default-metric N' on each switch to set the metric for redistributed routes. Note that this will affect all redistributed routes, but since you don't seem to have any others that overlap, it won't likely be a problem. I would use a large, round value to make it clear which switch the route is coming from, e.g. use 'default-metric 100' on switch A, 'default-metric 300' on switch B, 'default-metric 200' on switch C, etc., according to your order of routing preference.
(You could also use a different metric type for switch A & C, e.g. 'metric-type type1' on switch A and 'metric-type type2' on switch C, and OSPF would prefer metrics of type 1 to type 2, but this is not as scalable, since it wouldn't work if you introduced more switches.)
Regarding LSA metrics:
The switches keep an identical copy of the LSA database, then work out their cost to each link relative to their own position. The analogy i've read is that it's like having a copy of the same map of your country, but starting from 3 different cities. You might take 3 different routes to get to the same destination depending on which city you started from.
Your output didn't show 10.20.0.0/24 - i'll assume 10.19.1.0/24 instead. It is connected on switch C, so it has a metric of 1. The links between your switches (VLANs 40-42) also have a metric of 1, so switches A and B add the metric of their link to switch C to the metric of the route in the database, giving it a metric of 2 from those switches.
Hope that makes sense.