This topic needs to be made a Sticky, because I'm sick beyond sick of explaining this over and over.
Magikarp and Gyarados are based off a Japanese legend. A weak, powerless fish existed in a peaceful lake, and stumbled across a roaring waterfall. The fish attempted to climb this waterfall, to prove its use. It succeeded, and the gods rewarded it by turning it into a flying serpent and blessing it with amazing powers. So yes, GYARADOS. CAN. FLY. And if you didn't know this yourself, The Wacky Watcher of the Orange Island episodes makes a nice wake-up call, because the entire episode is a recreation of how Nintendo planned out the two.
That's speaking from a design stand-point. Now for Competitive reasoning:
Dragon/Water would DESTROY Gyarados in every way imaginable. First off, it would be susceptible to Earthquake and other Ground Type moves, Earthquake being way up there with the most frequently seen moves on NetBattle. Second, it would lose all Physical STAB, and be pretty much just like poor Yanma Statwise(meaning its lesser Offensive Stat is higher than the Offense that allows it to use its two STABs). HP Flying wouldn't do near as much damage without STAB to back it up.
And from a common sense stand-point, it won't happen. If Nintendo wanted to fix this, they would have done it in G/S/C. It's the same thing with the Poison or Dark debate with the Gengar line(except they actually SHOULD be Dark Types, because they're only Poison Types because it was the closest thing to Dark back then).
To sum it up, the worthless fish did not become a Dragon. It became a serpent. Serpent, not dragon. Not dragon, serpent. In no way draconic, but serpentine. Less of a dragon, more of a snake. I don't know how much I have to impress this on everyone until the point is made clear, but that should hopefully get the message across.
And anyone who whines that Gyarados can't fly or that it looks more like a Dragon needs to STHU, because it obviously can fly and it will never become a Dragon.