关于一段C程序的执行问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 20:16:26
为什么这段程序在在我其他同学的电脑上运行很正常!我的电脑上运行就不正常,就是在形成这个图的邻接矩阵时 没有输入就直接跳过,然后就全部输出0或(无穷大的符号),为此我将VC6.0重装了一遍,还不行又装了VS2008,依然还是同样的问题,请高手指点。下面是原代码(我觉得应该和源代码无关)。如果能完美解决这个问题我会再加100分。

typedef char VertexType; //顶点的名称为字符
const int MaxVertexNum=10; //图的最大顶点数
const int MaxEdgeNum=100; //边数的最大值
typedef int WeightType; //权值的类型
const WeightType MaxValue=32767; //权值的无穷大表示
typedef VertexType Vexlist[MaxVertexNum]; //顶点信息,定点名称
typedef WeightType AdjMatrix[MaxVertexNum][MaxVertexNum]; //邻接矩阵
typedef enum{DG,DN,AG,AN} GraphKind; //有向图,有向网,无向图,无向网

typedef struct{
Vexlist vexs; // 顶点数据元素
AdjMatrix arcs; // 二维数组作邻接矩阵
int vexnum, arcnum; // 图的当前顶点数和弧数
GraphKind kind; // 图的种类标志
} MGraph;

void CreateGraph(MGraph &G, GraphKind kd)// 采用数组邻接矩阵表示法,构造图G
{//构造有向网G
int i,j,k,q;
char v, w;
G.kind=kd; //图的种类

printf("输入要构造的图的顶点数和弧数:\n");
scanf("%

是编译后的EXE在你同学机子上运行正常,在你的机子上运行不正常吗?还是同样的源文件在他的编译环境下生成EXE正常,但在用你的编译环境生成的EXE不正常?

如果是后者,这样试一下:在每个输入整数或字符的SCANF函数后加flushall函数,清除缓冲区。 这个函数头文件好像是STDIO 或STDLIB,我也忘了。

原因是输入整数或字符时 系统从缓冲区取走正常输入的整数或字符并清除,但不清楚后面的回车。TC2.0有这个问题,TC3.0好像没有。VC6.0有人反映有这个问题。