Ditto @j.r. It's for historical reasons. If I was designing an alphabet for English from scratch, it would be different from our present alphabet in many ways.
Yes, the letter "q" is useless because it could almost always be written "kw". "Q" is also used when transliterating a sound found in Arabic, Hebrew, and other languages that we don't have in English, as in, for example, "al Qa'eda".
"C" is useless. It either sounds like an "s" ("celery") or like a "k" ("corn"). Well, when followed by "h" it does create a unique sound ("cherry"), but I think we would have been better off to have a distinct letter for that.
"G" can have its unique hard sound ("good"), or it can sound just like "j" ("gentle"). Why not use a "j" when we want the "j" sound?
Etc. If you're learning English, you just have to learn all these different sounds that the letters can make. Yes, it would be better if there was one sound for every letter and one letter for every sound. But there isn't in English.