为什么循环进不去,直接跳出


#include<stdio.h>
#include<stdlib.h>
#define maxnum 30  //最大顶点个数 
#define MAX_INT 32767
typedef struct {
    char vexs[maxnum];   //顶点向量     
    int arcs[maxnum][maxnum];//邻接矩阵     
    int vexnum,arcnum; //图的顶点数和弧数 
}Mgraph;
void createMgraph(Mgraph *G)
{
    int i,j,k,w;
    printf("输入顶点个数和边数:");
    scanf("%d %d",&G->vexnum,&G->arcnum);
    for(i=0;i<G->vexnum;i++)
        G->vexs[i]=(char)i;     //以城市i为出发点
    for(i=0;i<G->vexnum;i++);    
        for(j=0;j<G->vexnum;j++)     //任意城市j为终点
        {
            G->arcs[i][j]=MAX_INT;//距离初始化 
         } 
    for(k=0;k<G->arcnum;k++)//构造邻接矩阵    
    {
        printf("输入两个顶点和权值");
        scanf("%d %d %d",&i,&j,&w);
        G->arcs[i][j]=w;
        G->arcs[j][i]=w;  //无向图邻接矩阵具有对称性 
     } 
        
}
int main()
{
    Mgraph *G;
    createMgraph(G);
    return 0;
}

改成这样就好了

img


#include<stdio.h>
#include<stdlib.h>
#define maxnum 30  //最大顶点个数
#define MAX_INT 32767
typedef struct {
    char vexs[maxnum];   //顶点向量
    int arcs[maxnum][maxnum];//邻接矩阵
    int vexnum,arcnum; //图的顶点数和弧数
}Mgraph;
void createMgraph(Mgraph G)
{
    int i,j,k,w,x,y;
    printf("输入顶点个数和边数:");
    scanf("%d %d",&x,&y);
    G.vexnum=x;
    G.arcnum=y;
    for(i=0;i<G.vexnum;i++)
        G.vexs[i]=(char)i;     //以城市i为出发点
    for(i=0;i<G.vexnum;i++)
        for(j=0;j<G.vexnum;j++)     //任意城市j为终点
        {
            G.arcs[i][j]=MAX_INT;//距离初始化
         }
    for(k=0;k<G.arcnum;k++)//构造邻接矩阵
    {
        printf("输入两个顶点和权值");
        scanf("%d %d %d",&i,&j,&w);
        G.arcs[i][j]=w;
        G.arcs[j][i]=w;  //无向图邻接矩阵具有对称性
     }

}
int main()
{
    Mgraph G;
    createMgraph(G);
    return 0;
}


删除for语句后面的分号:
for(i=0;ivexnum;i++)

因为这个循环,你多了个分号 ;

img

希望对题主有所帮助!可以的话,帮忙点个采纳!

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632