"selection" is lower-case 'c':
Code:
while (selection != 'c' || selection != 'C');
selection != 'c' // False
selection != 'C' // True
False OR True = True ... loop continues
"selection" is upper-case 'C':
Code:
while (selection != 'c' || selection != 'C');
selection != 'c' // True
selection != 'C' // False
True OR False = True ... loop continues
"selection" is upper-case 'A':
Code:
while (selection != 'c' || selection != 'C');
selection != 'c' // True
selection != 'C' // True
True OR True = True ... loop continues
See the pattern?
You did not specify exactly how you wanted the logic, whether an input of 'c' exits the loop or an input other than 'c' exits the loop. If it's the former, perhaps you should try logical AND instead.