编译器说缺少声明;

标签 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

最佳答案

首先,您在这里缺少一个分号:

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");

关于编译器说缺少声明;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173330/

相关文章:

c - 逐行、逐字地阅读文本。 C编程

Java 到 C 的迁移

c - GCC 的代码覆盖率选项如何工作?

c - MD5源代码未输出正确值

c++ - C代码——需要说明有效性

c - C 中的 Game Boy Advance Homebrew 图像问题

C fopen模式读+写+创建

javascript - 脚本:在HTML文件中显示图像

fedora - eclipse 中的 Pam 模块

C - 将 3.00 变为 3