C语言生成无向网

发布时间:2024-09-28 23:10 发布:上海旅游网

问题描述:

这个是代码的一部分,第一次输入网的顶点数跟边数
第二次输入每个顶点的值(一个字符)

例如我输入 3,3
a b c
我希望输出 33
abc

下面是代码,我觉得输入的语句可能有问题,我实在不知道怎么修改好

#include"string.h"
#include"stdio.h"
#define MAX 50

typedef struct
{ char vexs[MAX];
int arcs[MAX][MAX];
int vexnum;
int arcnum;
} MGraph;

MGraph CreateUDN(MGraph G)
{
int i;
printf("输入顶点和边数(用,分隔):");
scanf("%d,%d",&G.vexnum,&G.arcnum);getchar();
printf("输入顶点所用符号:");
for (i=0;i<G.vexnum;i++)
G.vexs[i]=getchar();getchar();
return (G);
}

void main()
{ int i;
MGraph G;
G=CreateUDN(G);
printf("%d%d\n",G.vexnum,G.arcnum);
for (i=0;i<G.vexnum;i++)
printf("%c",G.vexs[i]);
}

问题解答:

#include"string.h"
#include"stdio.h"
#define MAX 50

typedef struct
{ char vexs[MAX];
int arcs[MAX][MAX];
int vexnum;
int arcnum;
} MGraph;

MGraph CreateUDN(MGraph G)
{
int i;
char c;
printf("输入顶点和边数(用,分隔):");
scanf("%d,%d",&G.vexnum,&G.arcnum);
getchar();
printf("输入顶点所用符号:");
for (i=0;i<G.vexnum;)
{
c=getchar();
if (c!=' ')
{
G.vexs[i]=c;
i++;
}

}

getchar();
return (G);
}

void main()
{ int i;
MGraph G;
G=CreateUDN(G);
printf("%d%d\n",G.vexnum,G.arcnum);
for (i=0;i<G.vexnum;i++)
printf("%c",G.vexs[i]);
}
不知道是不是你想要的效果。、

使用fflush(stdin);

#include"string.h"
#include"stdio.h"
#define MAX 50

typedef struct
{ char vexs[MAX];
int arcs[MAX][MAX];
int vexnum;
int arcnum;
} MGraph;

MGraph CreateUDN(MGraph G)
{
int i;
printf("输入顶点和边数(用,分隔):");
scanf("%d,%d",&G.vexnum,&G.arcnum);
fflush(stdin);
printf("输入顶点所用符号:");
for (i=0;i<G.vexnum;i++)
{
fflush(stdin);
G.vexs[i]=getchar();
}
return (G);
}

void main()
{ int i;
MGraph G;
G=CreateUDN(G);
printf("%d%d\n",G.vexnum,G.arcnum);
for (i=0;i<G.vexnum;i++)
printf("%c",G.vexs[i]);
}

热点新闻