user-0 提问: 把这个C++代码改成C语言的。

回复:
user: user-1
content: 我用vs2005 加上#include "stdlib.h" 就可以运行

user: user-2
content: 编译出来没问题啊 //#include"iostream" #include"stdio.h" #include"time.h" #include"malloc.h" #define M 20 #define N 20 //堆栈结构 typedef struct node  {     int row ;     //行     int col ;     //列     struct node*next ; } Mlink ; Mlink*stack ; //定义一个栈 int backup[M+2][N+2]; //备份数组  /*********************************建立迷宫矩阵**************************/   //建立迷宫 void create(int maze[][N+2]) {     int i,j,flag ;     srand((unsigned)time(NULL));     //以时间产生随机种子     for(i=0;i<=M+1;i++)     for(j=0;j<=N+1;j++)     maze[i][j]=1 ;     //将四周置为1     for(i=1;i<=M;i++)     for(j=1;j<=N;j++)     {         maze[i][j]=0 ;         //初始化矩阵         backup[i][j]=0 ;         //初始化备份矩阵     }     printf("建立迷宫矩阵(选择1或者2)：\n1,手动建立\n2,自动建立\n请输入您的选择：\n");     scanf("%d",&flag);     //手动建立迷宫     if(flag==1)     {         printf("手动建立迷宫矩阵(0表示可通1表示障碍):\n");         for(i=1;i<=M;i++)         for(j=1;j<=N;j++)         scanf("%d",&maze[i][j]);     }               if(flag==2)     {         //自动建立迷宫         int c,i1,j1 ;         for(c=1;c<=M*N;c++)         {             //矩阵初始为“0”，随机选择位置赋予一个随机的0或1，             i1=(int)(rand()%M)+1 ;             j1=(int)(rand()%N)+1 ;             maze[i1][j1]=(int)(rand()%2);             //随机矩阵 按照王教授的要求这样可以产生更多的“0”即通路         }         printf("自动生成中……\n");         system("pause");     }     for(i=1;i<=M;i++)     for(j=1;j<=N;j++)     backup[i][j]=maze[i][j];     //备份数组矩阵 } /***************************华丽的分割线*******************************/   /********************************打印迷宫矩阵*****************/ void prin(int maze[][N+2]) {     int i,j ;     printf("迷宫矩阵如下(0可通)：\n  ");     int z ;     //在矩阵上方标明列号     for(z=1;z<=N;z++)     {         if(z<10)         printf("%d ",z);         else          printf("%d",z);     }     for(i=1;i<=M;i++)     {         printf("\n");         if(i<10)printf("%d ",i);         //矩阵左方标明行号         else printf("%d",i);         for(j=1;j<=N;j++)         printf("%d ",maze[i][j]);     }     printf("\n迷宫图形如下(白色可通)：\n");     printf("  ");     //在图形上方标明列号     for(z=1;z<=N;z++)     {         if(z<10)         printf("%d ",z);         else          printf("%d",z);     }     for(i=1;i<=M;i++)     {         printf("\n");         if(i<10)printf("%d ",i);         //矩阵左方标明行号         else printf("%d",i);         for(j=1;j<=N;j++)         {             if(maze[i][j]==0)printf("*");             if(maze[i][j]==1)printf("#");         }     }      } /*******************************分割线***************************/    int Mazepath(int maze[][N+2],int x1,int x2,int y1,int y2) {     Mlink*p ;     if(maze[x1][y1]==0)     {         p=(Mlink*)malloc(sizeof(Mlink));         p->row=x1 ;         p->col=y1 ;         p->next=NULL ;         stack=p ;         //将入口放入堆栈         maze[stack->row][stack->col]=1 ;         //标志入口已访问         //未找到出口并且堆栈不空         while((!(stack->row==NULL&&stack->col==NULL))&&(!(stack->row==x2&&stack->col==y2)))         {             //下面位置可通             if(maze[stack->row][stack->col+1]==0)             {                 p=(Mlink*)malloc(sizeof(Mlink));                 p->row=stack->row ;                 p->col=stack->col+1 ;                 p->next=stack ;                 //入栈                 stack=p ;                 maze[stack->row][stack->col]=1 ;                 //标记已访问             }             //上面可通             else if(maze[stack->row][stack->col-1]==0)             {                 p=(Mlink*)malloc(sizeof(Mlink));                 p->row=stack->row ;                 p->col=stack->col-1 ;                 p->next=stack ;                 //入栈                 stack=p ;                 maze[stack->row][stack->col]=1 ;                 //标记已访问                              }             //右面可通             else if(maze[stack->row+1][stack->col]==0)             {                 p=(Mlink*)malloc(sizeof(Mlink));                 p->row=stack->row+1 ;                 p->col=stack->col ;                 p->next=stack ;                 //入栈                 stack=p ;                 maze[stack->row][stack->col]=1 ;                 //标记已访问             }             //左面可通             else if(maze[stack->row-1][stack->col]==0)             {                 p=(Mlink*)malloc(sizeof(Mlink));                 p->row=stack->row-1 ;                 p->col=stack->col ;                 p->next=stack ;                 //入栈                 stack=p ;                 maze[stack->row][stack->col]=1 ;                 //标记已访问             }             //不可通 返回上一点             else              {                 if(stack->next!=NULL)                 {                     //堆栈里布置一个顶点则出栈并返回循环                     p=stack ;                     stack=stack->next ;                     //出栈                     free(p);                     //释放空间                 }                 //堆栈里只有一个顶点即入口，此时若释放空间出栈会使循环                 else                  {                     //控制语句无法比较（因为stack->col,stack->row都已不存在，)                     stack->row=NULL ;                     stack->col=NULL ;                     stack->next=NULL ;                 }             }                      }         if(stack->row==x2&&stack->col==y2)return(1);         else return(0);              }     else return(0); }  /****************************输出坐标通路*******************/ void printonglu1() {     Mlink*q ;     printf("其中的一条通道为：\n");     q=stack ;     printf("出口<--");     while(q!=NULL)     {         printf("(%d%3d)<--",q->row,q->col);         q=q->next ;     }     printf("入口\n"); } /*******************************分割线**********************/   /**********************输出图形通路**************************/  //2时输出↑，3时输出←，4时输出→，5时输出↓  void printonglu2() {     printf("图形通路如下：\n");     int z ;     printf("  ");     //图形上方标明列号     for(z=1;z<=N;z++)     {         if(z<10)         printf("%d ",z);         else          printf("%d",z);     }     int i,j ;     Mlink*p ;     p=stack ;     backup[p->row][p->col]=6 ;     while(p->next!=NULL)     {         if(p->next->col!=NULL)         {             if(p->row>p->next->row)backup[p->next->row][p->next->col]=5 ;             //下一节点在下             else if(p->row<p->next->row)backup[p->next->row][p->next->col]=2 ;             //下一节点在上             else if(p->col>p->next->col)backup[p->next->row][p->next->col]=4 ;             //下一节点在右             else backup[p->next->row][p->next->col]=3 ;             //下一节点在左         }         else ;         p=p->next ;     }     for(i=1;i<=M;i++)     {         printf("\n");         if(i<10)printf("%d ",i);         //图形左方标明行号         else printf("%d",i);         for(j=1;j<=N;j++)         {             if(backup[i][j]==0)printf("*");             if(backup[i][j]==1)printf("#");             if(backup[i][j]==2)printf("↑");             if(backup[i][j]==3)printf("←");             if(backup[i][j]==4)printf("→");             if(backup[i][j]==5)printf("↓");             if(backup[i][j]==6)printf("=");         }     } } int main() {     system("color f0");     //背景该为白色     int k=1 ;     int maze[M+2][N+2];     //迷宫矩阵     create(maze);     //建立迷宫          int abc[M+2][N+2],p,q ;     //备份数组以重复使用迷宫     for(p=0;p<=M+2;p++)     for(q=0;q<=N+2;q++)     abc[p][q]=maze[p][q];     while(k!=0)     {         int x,x1,x2,y1,y2 ;         prin(maze);         //打印迷宫矩阵         printf("\n输入迷宫入口：\n");         scanf("%d%d",&x1,&y1);         printf("输入迷宫出口：\n");         scanf("%d%d",&x2,&y2);         x=Mazepath(maze,x1,x2,y1,y2);         //迷宫可通         if(x==1)         {             printonglu1();             //打印坐标通路             printonglu2();             //打印图形通路             printf("\n");         }         else printf("无通路！\n");         //不可通         for(p=0;p<=M+2;p++)         for(q=0;q<=N+2;q++)         {             backup[p][q]=abc[p][q];             maze[p][q]=abc[p][q];         }         printf("输入0结束:\n");         scanf("%d",&k);     } }  就是有5个警告

user: user-3
content: 我刚试了试，VC6和VS005都不行，我的上个图片用的是C-Free5.0，我这儿VC6加上#include<stdlib.h>也不行，VC6现在已经落后了啊 楼主可以试试在你那儿，加上#include<stdlib.h>这个头文件试试

user: user-0
content: 引用 6 楼 u012421456 的回复: 我这里能运行，不知道楼主什么编译器  VC6

user: user-3
content: 而且是后缀为.c的C程序

user: user-3
content: 我这里能运行，不知道楼主什么编译器

user: user-0
content: 把  引用 4 楼 u012421456 的回复:[quote=引用 3 楼 u012421456 的回复:] 是同一楼， 接着运行程序看看吧！本来就是个C程序[/quote]  这个程序只能用 .CPP 才能运行。但需要.c 运行。按照你说的改了 没有用。 没有学过C语言。希望哪位大神帮忙改一下。真的可以再发出来吧。是来送分的，因为很急。拜托了 (┬＿┬)

user: user-3
content: 引用 3 楼 u012421456 的回复: 是同一楼， 接着运行程序看看吧！本来就是个C程序

user: user-3
content: 同楼上， 楼主到底看程序了没有啊，不是只看了第一行代码吧？ 把第一行注释掉，然后把第48行的int去掉

user: user-4
content: 来送分的

user: user-5
content: 目测这本来就是C