Auto-ranging voltmeter circuit with PIC uC ADC
I'm not 100% on this but I think most PIC ADCs are 10 bit (1 in 1024 resolution) but can have up to 10x LSBs inaccuracy - this means you're just about at the 1% accuracy stage without considering resistor accuracies.

Using PIC outputs as pull downs isn't a good idea either because there will be leakage currents from the pins that will add/subtract a voltage from the signal via the resistors. Also, you appear to be relying on PIC outputs going exactly to ground but neither is this the case and your accuracy on the lowest range will be dented.

Also, I think the zener won't be needed because R1 will limit current into the op-amp and it will self protect - 50V across 50k gives 1mA and most op-amps are capable of dealing with this sort of current using their internal diodes. I'd run the op-amp from 5V too - this means there's no chance it can stuff a killer voltage (6V or above) into the PIC ADC pin. Use something like an AD8605 - it is rail to rail but, because you can't exactly achieve 5V, scale things down by 10% and restore in the CPU with a frig-factor.

Having an op-amp that is self-protecting (due to the 50k) means negative voltages are also protected against but read the data sheets on the op-amp to be absolutely sure. If you still think you need the zener, consider that a zener will be starting to draw current at voltages significantly below 5V - it isn't an on-off thing as soon as you hit 4.99 volts.