两段一模一样的代码,前者因为scanf函数里多一个空格就可以正常运行,后者少了就不行
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
//无向图的邻接矩阵
typedef struct
{
char data[MAXSIZE];//顶点数组
int arc[MAXSIZE][MAXSIZE];//邻接矩阵
int vexnum;
int edgenum;//当前的定点数和边数
}Gragh;
//图的邻接矩阵的创建
void CreateMgragg(Gragh *g)
{
int i,j,k;
printf("请输入点和边的个数:");
scanf("%d %d",&g->vexnum,&g->edgenum);
printf("请输入所有点的信息:");
for(i=0;i<g->vexnum;i++){
scanf(" %c",&g->data[i]);
}
for(i=0;i<g->vexnum;i++){
for(j=0;j<g->vexnum;j++){
g->arc[i][j]=0;
}
}
for (k=0; k < g->edgenum; k++)
{
printf("请输入第%d条边的两个顶点,各式(i j):",k+1);
scanf("%d %d", &i, &j);
g->arc[i][j] = 1;
g->arc[j][i] = 1;//???????????
}
}
void grint(Gragh g)
{
int i,j;
for (i = 0; i < g.vexnum; i++)
{
for (j = 0; j < g.vexnum; j++)
{
printf("%-3d", g.arc[i][j]);
}
printf("\n");
}
}
int main()
{
Gragh g;
CreateMgragg(&g);
grint(g);
return 0;
}
```c
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
//无向图的邻接矩阵
typedef struct
{
char data[MAXSIZE];//顶点数组
int arc[MAXSIZE][MAXSIZE];//邻接矩阵
int vexnum;
int edgenum;//当前的定点数和边数
}Gragh;
//图的邻接矩阵的创建
void CreateMgragg(Gragh *g)
{
int i,j,k;
printf("请输入点和边的个数:");
scanf("%d %d",&g->vexnum,&g->edgenum);
printf("请输入所有点的信息:");
for(i=0;i<g->vexnum;i++){
scanf("%c",&g->data[i]);
}
for(i=0;i<g->vexnum;i++){
for(j=0;j<g->vexnum;j++){
g->arc[i][j]=0;
}
}
for (k=0; k < g->edgenum; k++)
{
printf("请输入第%d条边的两个顶点,各式(i j):",k+1);
scanf("%d %d", &i, &j);
g->arc[i][j] = 1;
g->arc[j][i] = 1;//???????????
}
}
void grint(Gragh g)
{
int i,j;
for (i = 0; i < g.vexnum; i++)
{
for (j = 0; j < g.vexnum; j++)
{
printf("%-3d", g.arc[i][j]);
}
printf("\n");
}
}
int main()
{
Gragh g;
CreateMgragg(&g);
grint(g);
return 0;
}
两段的差异就在20行的scanf函数,为什么会产生这样的结果
fflush(stdin); //可能是缓冲区还有多余的字符,比如说回车,加上这个看看
scanf("%c",&g->data[i]);