为什么我会收到预期的标识符错误代码?

我正在做一个关于 C 语言的作业,我想我在某个地方搞砸了,但我根本找不到它,这很令人沮丧。

这是错误

" }
 ^
main.c:160:1: error: expected identifier or ‘(’ before ‘{’ token
 {  
 ^
"

我试过搜索错误点击等,但找不到。

代码:

#include <stdio.h>
const int PASSENGER_SIZE=7;
const int FLIGHT_SIZE=6;
void O_F1_6(int arr[],int N);
float O_F2_6(int arr[]);
void O_F4_6(int arr[][FLIGHT_SIZE],int IdPass[],char frqflyr[]);
int O_F3_6(int arr[],int IdFlight[],int numtrips);
int main()
{
   int IDs_passengers [PASSENGER_SIZE];
   int IDs_flights [FLIGHT_SIZE];
   int Flight_frequency[PASSENGER_SIZE][FLIGHT_SIZE];
   char Freq_flyers [PASSENGER_SIZE];
   int i,j,p,f,pos,flid;
   float avg;
   printf("Enter the Ids of %d passengers: \n",PASSENGER_SIZE);
   for (i=0; i < PASSENGER_SIZE; +i) {
       scanf("%d",IDs_passengers + i);
       if(*(IDs_passengers + i)==-11)
       break;
       
   }
   for(j=i;j<PASSENGER_SIZE; ++i)
     * (IDs_passengers + j)=-10;
     
     printf("Enter the Ids of %d flights: \n",FLIGHT_SIZE);
     for (i = 0; i < FLIGHT_SIZE; ++i){
         scanf("%d",IDs_flights + i);
         if(*(IDs_flights + i)==-11)
         break;
         
     }
     for(j=i;j<FLIGHT_SIZE; ++i)
     *(IDs_flights + j)==-10;
 printf("Enter the number of trips for each passenger: \n");
 for (i =0; i < PASSENGER_SIZE; ++i){
     if(*(IDs_passengers + i)==-10)
       break;
    else
    {
        printf("Passenger with ID=%d : ",*(IDs_passengers + i));
        O_F1_6(*(Flight_frequency+i),i);
        
    }
}
printf("\n********************************************************\n");
printf("Passenger Id\t Average trips\n");
  for (i = 0 ; i < PASSENGER_SIZE; i++)
  {
      avg=O_F2_6(*(Flight_frequency+i));
      printf("%d \t %f\n",*(IDs_passengers + i),avg);
}
printf("\n********************************************************\n");
O_F4_6(Flight_frequency,IDs_passengers,Freq_flyers);
printf("\n********************************************************\n");
printf("Enter the Passenger id and frequency of trip for a flight");
scanf("%d%d",&p,&f);
pos=-1;
for (i =0; i < PASSENGER_SIZE; i++)
 {
    if((*(IDs_passengers + i))==p)
 {
     pos=i;
     break;
     
 }
     
 }
 if(pos!=-1)
 {
     flid=O_F3_6(*(Flight_frequency+pos),IDs_flights,f);
     if(flid!=-1) {
         printf("The flight id is %d",flid);             }
     else         { 
         printf("Required information not found");       }
     
 }
 else           {
     printf("Required information not found");         }
 printf("\n********************************************************\n");
 return 0;
}
void O_F1_6(int arr[],int N)
{
    int i,j;
    for (i = 0; i < FLIGHT_SIZE; ++i) {
        scanf("%d",arr + i);
        if(*(arr + i)==-11)
        break;
        
    }
    for(j=i;j<FLIGHT_SIZE; ++j)
    *(arr + j)=-10;
}
float O_F2_6(int arr[])
{
    int i,sum,c;
    float avg;
    sum=c=0;
    for(i = 0; i < FLIGHT_SIZE; ++i){
        if(*(arr+i) !=-1){
        sum=sum+(*(arr + i));
        c++;
        }
        
    }
    avg=sum/c;
    return avg;
}
void O_F4_6(int Flight_frequency[ ][FLIGHT_SIZE],int Id_Pass[],char frqflyr[])
{
    int i,sum;
    printf("Passenger Id\t Frequent Flyer\n");
    for (i= 0; i < PASSENGER_SIZE; i++)
    {
        sum=0;
        for(j = 0; j < FLIGHT_SIZE; ++i) {
            if( *( *(Flight_frequency + i) + j)!=-10){
                sum=sum+(*(*(Flight_frequency + i) +j));
                
            }
        }
        
    }
    if(sum<250)
    {
        frqflyr[i]='R';
        printf("%d\t Regular\n",*(Id_Pass + i));
        
    }
    else if((sum=250)&&(sum<=1150))
    {
        frqflyr[i]='S';
        printf("%d It Silver\n",*(Id_Pass + i)) ;
        
    }
    else if((sum>1150)&&(sum<2150))
    {
        frqflyr[i]='P';
        printf("%d It Platinum \n",*(Id_Pass + i));
        
    }
    else
    {}
}
}
int O_F3_6(int arr[],int numtrips)
  {
    int i;
    int rt=-1;
    for(int i=0;i<FLIGHT_SIZE;i++)
    {
        if(*(arr + i)==numtrips)
        {
            rt=IdFlight[i];
            return rt;
        }
    }
  }
{  
return rt;
}
hlplyz 回答:为什么我会收到预期的标识符错误代码?

O_F4_6 的末尾(第 146 行)有一个额外的大括号,在 O_F3_6 之前的 return rt; 末尾也有不匹配的大括号,其中第 159 行和160 不应该在那里。

有关固定版本,请参阅 https://godbolt.org/z/KGG89qGnW。我注释掉了有问题的行(标记为 REMOVED)而不是删除它们,这样行号就不会改变。

(另请注意,此处显示了多个编译器警告,表明您的代码中存在其他错误。请仔细研究。)

如果您使用编辑器或工具自动缩进代码,这样的错误在视觉上会变得很明显。

本文链接:https://www.f2er.com/1180.html

大家都在问