I indented your code: nobody cares which indentation system you use: K&R, Whitesmiths, even the execrable 1TB is fine as long as you are consistent.
Now look at your code, and assume that the user enters "2" as the number of games.
How big is
pname
as a result?
char gname[p],pname[p];
Answer: 2 characters.
So when you try to read 550 characters what happens?
cin.get(pname,550);
Answer: It doesn't even slightly fit. So it randomly overwrites memory.
Worse, you do this repeatedly, overwriting the same memory you just overwrote.
And then after the loop, you try to work out the game score for the final name.
But...you have two different
gscore
arrays, and they aren't the same because they are in different functions.
That whole code shows sure signs of panic: you haven't sat down and thought about your homework, you've just slammed some code together and hoped for the best. That isn't going to work. Sit down, think about the homework task and what you need to do to solve it, and plan your code. Then try it out manually and see if it will work, before you get anywhere near a keyboard.
Hint: your "array of names" needs to be an array of pointer-to-character values, and you need to allocate enough space for each name before you read it - look at
malloc