各位高手这各程序总是有一个错误,帮忙搞一下!

#include<stdio.h>     /*建立任一个图的邻接矩阵*/
#define INT_MAX   32767
 typedef int vextype;
  typedef int arctype;
  typedef struct
  { vextype vex[50];
    arctype arc[50][50];
}MGraph;
void CreateMGraph(MGraph *ga)
{ int i,j,n,m,k,w;
   char ch;
   int r[50][50];
  scanf("%d %d",&n,&m);
  ga->vex[50]=n;
  ga->arc[50][50]=m;
 for(i=0;i<ga->vex[50];i++)
  { scanf("%c",&ch);
     ga->vex[i]=ch; }
 for(i=0;i<ga->vex[50];i++)
      for(j=0;j<ga->vex[50];j++)
           ga->arc[i][j]=INT_MAX;
 for(k=0;k<ga->arc[50][50];k++)
 {  scanf("%d %d %d",&i,&j,&w);
    ga->arc[i][j]=w;
    ga->arc[j][i]=w;
 }
 for(i=1;i<=n;i++)       /*输出邻接矩阵*/
  { for(j=1;j<=n;j++)
      printf("%3d",r[i][j]);
      printf("\n");
   }
main()
{ char s,a;
  clrscr();
  while (1)   /**选择下一步操作**/
   { printf("\n **********   a. 建设有向图   **********" );/*建立有向图 */
     printf("\n **********   b. 建立无向图   **********");/*建立无向图 */
     printf("\n **********   c. 建立有向网络 **********");/*建立有向网络*/
     printf("\n **********   d. 建立无向网络 **********");/*建立无向网络*/
     printf("\n **********   c. 退出         **********");/*退出*/
     printf("\n\n 请选择:");          /*输入你想要建立的图的类型*/
      scanf("%c",&s);
  if (s=='e')
  {  printf ("是否真要退出?(y/n)");
    if (toupper(getch())=='y')
      { a=getchar();return; }
     else scanf("%c",&s);
    }
  else CreateMGraph(s);
   }
}

 }