I battled Gary two times in Cerulean City, but as I lost both times, I decided to train some more.
While I was training, I randomly found a shiny Rattata, which I named Rat. After getting all Pokémon to level 15 or above (Charlie, my starter, was level 18), I decided to try my luck again. This time I won, and when Charlie got to level 19, I finally let her evolve.
And here's some battle summary (though I don't exactly remember whether Rattata or Squirtle was first so I might confuse their order, and I also don't exactly remember which moves were used so this may be wrong as well) :
1. >Cyclone/Rai vs. Pidgeotto
After a short while, Cyclone's HP was beaten to 6, so I switched her out and called out Rai. It took him a ThunderShock and a Quick Attack to beat the Pidgeotto (Cyclone also beat down some of its HP before), but Rai had little HP left(yellow-colored). When the game offered me to switch as Gary would send out Rattata, I decided to fight rat with rat so I switched Rai for Rat.
2. Rat vs. Rattata
This one was probably one of the easiest. Hyper Fang beat down all but 1HP of the foe, and the next move, which was Quick Attack, obviously finished it off. Gary's next Pokémon was Squirtle, so I sent out Rai.
3. Rai/Nido/Charlie vs. Squirtle
Rai, who had little HP left from his previous battle, only lasted one turn in which he, logically, used ThunderShock. When he fainted, I sent out Charlie (to fight Starter with Starter). However, she was quickly down to red-color of HP, so I switched her for Nido. He almost beat Squirtle with Double Kick and also left it poisoned, but then he was taken down. As Squirtle would definitely faint at the end of turn due to poisoning, I switched Charlie out again, just to make it look like she was the one who beat Squirtle. I also left her to the end; Gary's next Pokémon was Abra.
4.Charlie vs. Abra
This one was easy. Abra's only move is Teleport which can't do any damage whatsoever, and it was beaten with two turns (Ember, if I remember correctly. Or maybe Scratch.. or both?). Charlie leveled up and now she knows Smokescreen instead of Growl.
I finally let Charlie evolve after this battle. I got a Fame Checker, and also the ability to go to that route over the bridge. So I'll battle all these trainers and get to Bill and catch all Pokémon on that route which can possibly be found, train them to level 15 or higher, and then I'll challenge Misty. I hope I'll be able to do this all today, but I probably won't, as the training may take quite some while, depending on how many new Pokémon I get.