resalut j'ai tester avec quelque modification. ca s'affiche mais le probleme est que s'affiche tout le tableau

voici mon code modifier
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i,j,col,h,g,choix,ligne,Nb;
char serp[5][5]={'x','x','x','x','x'},tab[5][5];
g=0;
srand(time(NULL));
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
{ serp[i][j]='O'; }}
for(i=0;i<5;i++){
for(j=0;j<5;j++)
{ tab[i][j]='O'; }}
Nb=0;
do
{
i=rand()%5;
j=rand()%5;
if(serp[i][j]=='O'){
serp[i][j]='S';
Nb++;
}
}while(Nb<5);
do{
printf("\n");
printf(" | A B C D E \n");
printf("_______________________\n");
for (i=0;i<5;i++)
{
printf("\n");
printf("%d |",g);
g++;
for(j=0;j<5;j++)
{
printf(" %c |",tab[i][j] );
}
}
g=0;
printf("\n");
printf("\n\nquel colonne?\n");
scanf("%d",&col);
printf("quel ligne?\n");
scanf("%d",&ligne);
//stock la ligne voulue
i=ligne;
//stock la colonne voulue
j=col;
}while(choix<2);
for (i=0;i<5;i++)
{
printf("\n");
printf("%d |",g);
g++;
for(j=0;j<5;j++)
{
// Si le caractère diffère de 'O', on affiche
if(serp[i][j] != 'O' && tab[i][j]=='O')
{
printf(" %c |",serp[i][j]);}
else
printf(" O |");
}
}
g=0;
printf("\n");
system ("pause");
return 0;
}
pouvez vous me dire ou se situe mon erreur! merci