The problem you're seeing is that it really is reading a character, but it's just not the character you're expecting. scanf does formatted input. The first time you call it, you're telling it to expect a number. But you're really entering more than just a number:
Number?
1234.5678<enter>
When you press the enter key, it is actually inserting a character into your input stream. As you may know, we use \n to represent newline, the character you get when you press enter. So your input stream actually looks like "1234.5678\n".
So scanf does its thing and reads 1234.5678 and then it sees '\n'. It says "oh, that's not part of the number, so I'll stop." Well, your input still has the '\n'. The next time you call scanf, you tell it to read a character. The user types whatever they want, but that goes behind the '\n' from the previous scanf. So scanf tries to match the input stream with a character and says "ok, the first thing in this input stream is a character, and it's '\n', so I'll return that." The stuff the user typed is still sitting in the input stream.
So a simple way to get rid of it is to have a loop that empties all remaining characters from the input stream until it finds '\n'.
printf("Number?\n");
scanf("%f", &number1);
while( getchar() != '\n');
After this loop executes, your input stream will be empty. So the next time you call scanf, it'll wait for the user to type something and will use whatever the user typed.
Also note that scanf has a return value that you should check after calling it. Read up about scanf to see what it returns.