I guess I'm not as savvy with while loops as I thought. I know that I have to declare a value outside of the scope to have the loop run. I just don't understand why this isn't working. Any pointers? One time when I ran this it compiled. It does everything right, until I enter a lower case 'n' it should be looping with both and I even used the topper function.
I think you're a little confused as to how toupper works. That function takes a char and converts it to the uppercase equivalent. Ie. response = toupper(response); will take whatever is the current value in the response variable, convert it to uppercase, then store that new value into response. It only operates once when you call it, and using it on your variable initialization will do nothing except perhaps give you uppercase junk as a starting value.
On line 59, you read in the char from the user, but don't convert it to uppercase before checking it. You need to add toupper after that line somewhere and before the check in your while loop.