“'''之前的”预期标识符'或''''''''''''和''''''''''''''''''''''''

时间:2012-04-28 17:28:57

标签: c

这是C(adjacency.c)中的prog,用于检查是否存在从节点a到节点b的有向图方式

# include <stdio.h>
# include <stdlib.h>

#define N 11
#define FALSE 0
#define TRUE 1

typedef  int[N][N] adj_mat;

int path (adj_mat A, int u, int v)






void main()
    {
        adj_mat Matrix; 
        int dadnode, sonnode; 

        printf("bla-bla-bla enter nodes.\n");            
             printf("Press Ctrl+Z after finishing  of bla-bla-bla all the nodes\n");

        do {    
            printf("Enter the  number of first node\n"); 
            scanf("%d", &dadnode);
            printf("Enter the  number of second node\n");
            scanf("%d", &sonnode;);

            if ((dadnode < sonnode) && (sonnode <= N) && (dadnode > 0)) 
                Matrix[dadnode][sonnode] = 1; 
            } while ( (dadnode != EOF ) && (sonnode != EOF)); 


        printf("Now enter u and v nodes to check if exists way from u node to we node\n")

            printf("Enter the  number of u node\n"); 
            scanf("%d", &dadnode);
            printf("Enter the  number of v node\n");
            scanf("%d", &sonnode;);

            if ((dadnode < sonnode) && (sonnode <= N) && (dadnode > 0)) 
             {
                if(path(Matrix,dadnode,sonnode) == TRUE ) 
                    printf ("Exists way from node u to node v ");   
             }

                else printf printf ("Not exists way from node u to node v ");   

    }






int path (adj_mat A, int u, int v) 
    {
        if (v >= u)  
        return FALSE; 

        int nodenum; 

        for(nodenum = v - 1; nodenum > 0; nodenum-- ) 

            {
                if (A[nodenum][v] == TRUE) 
                {
                    if (nodenum == u) /
                        return TRUE;

                    else if (path (adj_mat A, int u, int nodenum)) 


                        return TRUE;
                }
            }   

        return FALSE; 
    }

当我输入命令

  

gcc -o adjacency -ansi adjacency.c

我得到了

  

adjacency.c:8:错误:预期的标识符或'('''''之前的标记

     

adjacency.c:10:错误:预期')'在'A'之前

     

adjacency.c:58:错误:预期')'在'A'之前

如何解决?

更新:感谢所有人的帮助。编译。

4 个答案:

答案 0 :(得分:9)

您应将[N][N]部分移至声明的末尾,并在path的前向声明后添加分号。

typedef  int adj_mat[N][N];
int path (adj_mat A, int u, int v);

其余代码中也存在不准确之处:

  • scanf("%d", &sonnode;);有额外的分号,应为scanf("%d", &sonnode);
  • else printf printf应为else printf
  • 少数地方缺少分号
  • /位于一行的末尾,不应该在那里
  • main需要返回int

答案 1 :(得分:4)

类型int[N][N]无效C ++。尝试:

typedef  int adj_mat[N][N];

代替。

另外:

您需要在行尾添加分号(';'):

int path (adj_mat A, int u, int v) 
printf("Now enter u and v nodes to check if exists way from u node to we node\n")

您不需要

中的第一个分号
scanf("%d", &sonnode;);

中有一个额外的(多余的)printf
else printf printf ("Not exists way from node u to node v "); 

中的行无效
if (nodenum == u) /   

答案 2 :(得分:1)

在第10行的函数定义之后,你错过了分号:

int path (adj_mat A, int u, int v);

答案 3 :(得分:1)

下方末尾有一个分号丢失。

int path (adj_mat A, int u, int v);