请高手帮忙解释以下一段C语言程序代码,本人在此感激不尽。

void output(city1,city2) /*输出函数*/
int city1;
int city2;
{
int a,b,c,d,q=0;
a=city2;
if(a!=city1)
{
printf("\n从%s到%s的最短路径是",G.vex[city1].city,G.vex[city2].city);
printf("(最短距离为 %dkm.)\n\t",D[a]);
printf("%s",G.vex[city1].city);
d=city1;
for(c=0;c {
gate:; /*标号,可以作为goto语句跳转的位置*/
P[a][city1]=0;
for(b=0;b {
if(G.arcs[d][b].adj {
printf("-->%s",G.vex[b].city);q=q+1;
P[a][b]=0;
d=b;
if(q%8==0) printf("\n");
goto gate;
}
这段代码中的f(q%8==0) 这句是什么意思,这段代码的输出流程是怎样的。本人在此感激不尽。

你的for(c=0;c {
gate:; /*标号,可以作为goto语句跳转的位置*/
P[a][city1]=0;
for(b=0;b {
if(G.arcs[d][b].adj {
printf("-->%s",G.vex[b].city);q=q+1;
P[a][b]=0;
d=b;
if(q%8==0) printf("\n");

你确认是这样吗?

代码的for循环后面有部分残缺,不知道你的是什么逻辑,也没法给你补,至于if(q%8==0)是说判断q是不是8的倍数。