在进行数组程序运行之后出现该警告,也是会出现结果 ,但是结果是错误的。
上面MaxVertexNum 表示二维数组的每一维最大的个数,由结果可知每一维的个数是5个,没有超过最大数目,但是运行会出现警告而且结果是错误的。但是将数组的范围进修改之后就可以运行成功 而且结果是正确的。
我也是尝试之后发现的,具体原因不从得知
以下是完整代码,可以试验一下
#include<stdio.h>
#define Max -1//这里以-1代表最大值#define MaxVertexNum 10
typedef int VerTexType;//顶点的数据类型
typedef int EdgeType;//带权图中边上权值数据类型
typedef struct
{VerTexType Vex[MaxVertexNum];//顶点表EdgeType Edge[MaxVertexNum][MaxVertexNum];//邻接矩阵,边表int vexnum,arcnum;//图的当前顶点数和弧数
}MGraph;//函数说明
void CreatMGraph(MGraph &G);
void PrintMGraph(MGraph G);int main(void)
{MGraph G;CreatMGraph(G);printf("%d",G.vexnum);PrintMGraph(G);return 0;
}//无向网的建立
void CreatMGraph(MGraph &G)
{printf("请输入图的顶点数和边数:");int m,n;scanf_s("%d %d",&m,&n);G.vexnum = m;G.arcnum = n;int val;for(int i = 0; i < G.vexnum; ++i){printf("第%d个顶点值为:",i+1);scanf_s("%d",&val);G.Vex[i] = val;}for(int i = 0; i < G.vexnum; ++i){ for(int j = 0; j < G.vexnum; ++j){G.Edge[i][j] = Max;}}int i,j,w;for(int k = 0; k < G.arcnum; ++k){printf("请输入顶点和权值\n");scanf_s("%d %d %d",&i,&j,&w);printf("(Vi,Vj)下表为(%d,%d)的权值为%d:\n",i,j,w);G.Edge[i][j] = w;G.Edge[j][i] = G.Edge[i][j];}}//打印邻接矩阵存储的图
void PrintMGraph(MGraph G)
{for(int i = 0; i < G.vexnum; ++i){printf("第%d个顶点的值为%d\n",i+1,G.Vex[i]);}for(int i = 0; i < G.vexnum; ++i){for(int j = 0; j < G.vexnum; ++j){printf("%d ",G.Edge[i][j]);}printf("\n");}
}