编译说声明丢失;

时间:2010-07-04 00:35:30

标签: c

我在这段代码中遇到两个小问题,但我无法得到它们。我已经提到了编译器给出错误的位置。下面给出了两个:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define SIZE 100
int count;

void menu(void);
void input(int[]);
void print(int[]);
void insert(int[]);
void delete_element(int arr[]);
void search(int arr[]);

void main(void)
{
  int arr[SIZE];
  char choice;
  while(1)
  {
    menu();
    choice=getche();
    switch (choice)
    {
      case'1':input(arr);break;
      case'2':delete_element(arr);break;
      case'3':insert(arr);break;
      case'4':print(arr);break;
      case'5':search(arr);break;
      case'6':exit(0);//from stdlib.h
      default:printf("Enter valid choice!");
    }

    getch();
  }

void print(int arr[])
{    // says declaration syntax error here
  int i;
  for(i=0;i<count ;i++)
    printf("element is %d",arr[i]);

}

void input(int arr[])
{
  if(count<SIZE)
    for(count=0; ;count++)
    {
      printf("Enter element %d:",i+1);
      scanf("%d"&arr[i]);
      if(arr[count]==0)
      {
        count--;
        break;
      }
    }
}

void insert(int arr[])
{
  int i,value,index;
  if(count==SIZE)
    printf("Not enough space to perform insertion");
  else
  {
    printf("Enter value and index:");
    scanf("%d",&value,&index);
    for(i=index;i<=LEN;i++)
    {
      arr[i]=arr[i-1];
    }
    arr[index]=value;
    count++;
    printf("insertion succesful");
  }
}

void delete_element(int arr[])
{
  int index,i;
  if(count==0)
  {
    printf("Empty array");
  }
  else
  {
    printf("Enter Index:");
    scanf("%d",&index);
    for(i=index;i<LEN;i++)
    {
      arr[i]=arr[i+1]
    }
    count--;
    printf("Delete succesful.");
  }
}

void search(int arr[])
{
  int value,flag=0,i;
  printf("Enter value:");
  scanf("%d",&value);
  for(i=0;i<count;i++)
  {
    if(arr[i]==value)
    {
      printf("Value %d is found at index:",value,index);
      flag=i;
    }
  }
  if(!flag)
    printf("Value not found");
  printf("Search Complete");
}

} //                           declaration missing ; here

2 个答案:

答案 0 :(得分:7)

首先,你错过了一个分号:

for(i=index;i<LEN;i++)
{
    arr[i]=arr[i+1] // Missing semicolon!
}

您也没有使用右大括号关闭main函数。将程序末尾的大括号移到执行print()之前。

关于可读性的另一点。确保在打开括号和if语句后缩进。以下几行令人困惑,因为不清楚只有第一个printfif语句的一部分。

if(!flag)
printf("Value not found");
printf("Search Complete");

相反,缩进第二行,为了更加清晰,您可能想要使用大括号。喜欢这样:

if(!flag) 
{
    printf("Value not found");
}
printf("Search Complete");

答案 1 :(得分:3)

你在main中声明了函数,这是不正确的。删除最后一个右大括号,并在void print之前插入一个。您应该以一致且可读的方式格式化代码。