输出邻接矩阵的算法调试问题!
#include<stdio.h>graph(char s)
{ int i,j,n,w,m,k;
int r[100][100];
printf("\n\n请输入图的顶点数:"); /*你的图有多少个顶点*/
scanf("%d",&n);
printf("请输入图的边数:"); /*你的图有多少条边*/
scanf("%d",&m);
for(i=1;i<=n;i++) /*此循环语句为数组赋初值*/
for(j=1;j<=n;j++)
r[i][j]=0;
for(k=1;k<=m;k++)
{ switch(s)
{case'a': printf("\n\n请输入边的两个顶点(以空格分隔)");
scanf("%d%d",&i,&j);
r[i][j]=1;
break;
case'b': printf("\n\n请输入边的两个顶点和对应权值(以空格分隔)");
scanf("%d%d%d",&i,&j,&w);
r[i][j]=w;
r[j][i]=w;
break;
/*case'c': 。。。
case'd': 。。。 */
default: printf("error\n");k=m;
}
}
for(i=1;i<=n;i++) /*输出邻接矩阵*/
{ for(j=1;j<=n;j++)
printf("%3d",r[i][j]);
printf("\n");
}
}
main()
{char s,a;
clrscr();
while (1) /**选择下一步操作****/
{printf("\n ********** a. 建立有向图 **********"); /*建立有向图 */
printf("\n ********** b. 建立无向图 **********"); /*建立无向图 */
printf("\n ********** c. 建立有向网络 **********"); /*建立有向网络*/
printf("\n ********** d. 建立无向网络 **********"); /*建立无向网络*/
printf("\n ********** e. 退出 **********"); /*退出*/
printf("\n\n 请选择: ");/*输入你想要建立的图的类型*/
scanf("%c",&s);
if (s=='e')
{printf("是否真要退出?(y/n)");
if (toupper(getch())=='Y')
{a=getchar();return;}
else scanf("%c",&s);
}
else graph(s);
}
}
#include<stdio.h>
graph(char s)
{ int i,j,n,w,m,k;
int r[100][100];
printf("\n\n请输入图的顶点数:"); /*你的图有多少个顶点*/
scanf("%d",&n);
printf("请输入图的边数:"); /*你的图有多少条边*/
scanf("%d",&m);
for(i=1;i<=n;i++) /*此循环语句为数组赋初值*/
for(j=1;j<=n;j++)
r[i][j]=0;
for(k=1;k<=m;k++)
{ switch(s)
{case'a': printf("\n\n请输入边的两个顶点(以空格分隔)");
scanf("%d%d",&i,&j);
r[i][j]=1;
break;
case'b': printf("\n\n请输入边的两个顶点和对应权值(以空格分隔)");
scanf("%d%d%d",&i,&j,&w);
r[i][j]=w;
r[j][i]=w;
break;
/*case'c': 。。。
case'd': 。。。 */
default: printf("error\n");k=m;
}
}
for(i=1;i<=n;i++) /*输出邻接矩阵*/
{ for(j=1;j<=n;j++)
printf("%3d",r[i][j]);
printf("\n");
}
}
main()
{char s,a;
clrscr();
while (1) /**选择下一步操作****/
{printf("\n ********** a. 建立有向图 **********"); /*建立有向图 */
printf("\n ********** b. 建立无向图 **********"); /*建立无向图 */
printf("\n ********** c. 建立有向网络 **********"); /*建立有向网络*/
printf("\n ********** d. 建立无向网络 **********"); /*建立无向网络*/
printf("\n ********** e. 退出 **********"); /*退出*/
printf("\n\n 请选择: ");/*输入你想要建立的图的类型*/
scanf("%c",&s);
if (s=='e')
{printf("是否真要退出?(y/n)");
if (toupper(getch())=='Y')
{a=getchar();return;}
else scanf("%c",&s);
}
else graph(s);
}
}
调用graph后,返回输出供选择信息,这个没错,但是紧跟着的scanf语句怎么没执行,直接转到graph中的Printf语句:请输入图的顶点数(用的是wintc调试)
[此贴子已经被作者于2007-6-21 0:09:33编辑过]