主题:[讨论]为什么用scanf()得到的值与键盘输入的不符呢?
scanf("%d%d%d",&i,&j,&w); //////////问题就在这里,从键盘中读入1,2给i,j,但是输出的i,j值分别是2,3///////////////////////
完整程序是:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxVertexNum 10 //最大顶点数,应由用户定义
typedef char VertexType; //顶点类型应由用户定义
typedef int EdgeType; //边上的权值类型应由用户定义
struct MGraph{
VertexType vexs[MaxVertexNum]; //顶点表
EdgeType edges[MaxVertexNum][MaxVertexNum];//邻接矩阵,可看作边表
int n; //图中当前的顶点数和边数
int e;
}P;
void main()
{
void CreateMGraph(struct MGraph *);
CreateMGraph(&P);
}
void CreateMGraph(struct MGraph *G)
{//建立无向网的邻接矩阵表示
int i,j,k,w;
scanf("%d%d",&(G->n),&(G->e)); //输入顶点数和边数
int m=G->n;
int l=G->e;
printf("请输入%d顶点信息:\n",m);
for(i=0;i<m;i++) //读人顶点信息,建立顶点表
{
G->vexs=getchar();
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
G->edges[j]=0; //邻接矩阵初始化
}
}
printf("读入%d边信息:\n",l);
for(k=0;k<l;k++)
{//读入e条边,建立邻接矩阵
[color=FF0000]scanf("%d%d%d",&i,&j,&w); [/color[color=800000]]//////////问题就在这里,从键盘中读入1,2给i,j,但是输出的i,j值分别是2,3///////////////////////[/color]G->edges[j]=w;
G->edges[j]=w;
// printf("%d %d %d %d\n",i,j,w,G->edges[j]);
}
printf("该矩阵的权值信息为:\n");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
printf("%d",G->edges[j]);
}
printf("\n");
}
}//CreateMGraph
完整程序是:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxVertexNum 10 //最大顶点数,应由用户定义
typedef char VertexType; //顶点类型应由用户定义
typedef int EdgeType; //边上的权值类型应由用户定义
struct MGraph{
VertexType vexs[MaxVertexNum]; //顶点表
EdgeType edges[MaxVertexNum][MaxVertexNum];//邻接矩阵,可看作边表
int n; //图中当前的顶点数和边数
int e;
}P;
void main()
{
void CreateMGraph(struct MGraph *);
CreateMGraph(&P);
}
void CreateMGraph(struct MGraph *G)
{//建立无向网的邻接矩阵表示
int i,j,k,w;
scanf("%d%d",&(G->n),&(G->e)); //输入顶点数和边数
int m=G->n;
int l=G->e;
printf("请输入%d顶点信息:\n",m);
for(i=0;i<m;i++) //读人顶点信息,建立顶点表
{
G->vexs=getchar();
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
G->edges[j]=0; //邻接矩阵初始化
}
}
printf("读入%d边信息:\n",l);
for(k=0;k<l;k++)
{//读入e条边,建立邻接矩阵
[color=FF0000]scanf("%d%d%d",&i,&j,&w); [/color[color=800000]]//////////问题就在这里,从键盘中读入1,2给i,j,但是输出的i,j值分别是2,3///////////////////////[/color]G->edges[j]=w;
G->edges[j]=w;
// printf("%d %d %d %d\n",i,j,w,G->edges[j]);
}
printf("该矩阵的权值信息为:\n");
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
printf("%d",G->edges[j]);
}
printf("\n");
}
}//CreateMGraph