C语言local function definitions are illegal

#include<stdio.h>#include<string.h>voidmain(){voidsort(int[],charname[][8]);voidsearc... #include <stdio.h>
#include <string.h>

void main()
{
void sort(int[],char name[][8]);
void search(int,int[],char name[][8]);
int num[10],number,N=1,c,i;
char name[10][8];
for(i=0;i<10;i++)
{
printf("input NO.:");
scanf("%d",&num[i]);
printf("input name:");
scanf(name[i]);
}
sort(num,name);
while(N==1)
{
printf("input number to look for:");
scanf("%d",&number);
search(number,num,name);
printf("continue or not(Y/N)?");
getchar();
c=getchar();
if(c=='N'||c=='n')
N=0;

}
void sort(int num[],char name[10][8])
{
int i,j,min,temp1;
char temp2[8];
for(i=0;i<9;i++)
{min=i;
for(j=i;j<10;j++)
if(num[min]>num[j]) min=j;
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=temp1;
strcpy(name[min],temp2);
}
printf("result:\n");
for(i=0;i<10;i++)
printf("\n %d%10s",num[i],name[i]);

}
void search(int n,int num[],char name[10][8])
{
int top,bott,mid,loca,sign;
top=0;
bott=9;
loca=0;
sign=1;
if((n<num[0])||(N>num[9]))
loca=-1;
while((sign==1) && (top<=bott))
{mid=(bott+top)/2
if(n==num[mid])
{loca=mid;
printf("No. %d,his name is %s.\n",n,name[loca]);
sign=-1;
}
else if(n<num[mid])
bott=mid-1;
else
top=mid+1;
}
if(sign==1||loca==-1)
printf("can not find%d.\n",n);
}

}

运行的时候有错误,F:\15\15.cpp(31) : error C2601: 'sort' : local function definitions are illegal
F:\15\15.cpp(51) : error C2601: 'search' : local function definitions are illegal
执行 cl.exe 时出错.
请问是为什么啊,。
展开
 我来答
OfferComing留学
2022-12-24 · OfferComing一站式留学攻略
OfferComing留学
向TA提问
展开全部
函数定义出错。\x0d\x0alocal function definitions are illegal解决办法 :\x0d\x0a这个没有别的原因就是少了一个右大括号“}”,报错的个数和这个函数的位置有关,好像也和作用域有关,或者和它的使用频度有关,反正报错的个数不太一样,是主应用程序的一个函数少了一个“}”。解决的方法就是:如果函数的数量少就一个一个的用Ctrl+}来查,如果太多的话就的将最近改动过的来试,好像也没有什么好的方法。(一般报错的位置不是真正的出错位置,一般是报错位置的上一个函数)\x0d\x0aSyntax error:missing ';'before'}' missing function header(old-style formal list?)这样的错误提示肯定是少了一个左大括号“{”,这种情况下报错的数目不会太多,一般也就是四个Syntax error:missing ';'before'}' ,一个missing function header(old-style formal list?),这时候注意你查你这个函数的左大括号就可以了,当时这时的报错的行一般都不是真正出问题的地方,而是在这个的上面的某个函数少了一个左大括号。\x0d\x0a这是整个函数的大括号的问题,如果是函数内部少大括号的问题的话就不会报这么多错了,也比较好改。
琴秀曼Bp
推荐于2018-04-13 · TA获得超过690个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:667万
展开全部
函数定义不能嵌套,请把定义移至main的外面。而且在main中进行函数的声明也不是什么好习惯。
#include <stdio.h>
#include <string.h>
void sort(int[],char name[][8]);
void search(int,int[],char name[][8]);
int N = 1;

void main()
{

int num[10],number,c,i;
char name[10][8];
for(i=0;i<10;i++)
{
printf("input NO.:");
scanf("%d",&num[i]);
printf("input name:");
scanf(name[i]);
}
sort(num,name);
while(N==1)
{
printf("input number to look for:");
scanf("%d",&number);
search(number,num,name);
printf("continue or not(Y/N)?");
getchar();
c=getchar();
if(c=='N'||c=='n')
N=0;

}

}

void sort(int num[],char name[10][8])
{
int i,j,min,temp1;
char temp2[8];
for(i=0;i<9;i++)
{min=i;
for(j=i;j<10;j++)
if(num[min]>num[j]) min=j;
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=temp1;
strcpy(name[min],temp2);
}
printf("result:\n");
for(i=0;i<10;i++)
printf("\n %d%10s",num[i],name[i]);

}
void search(int n,int num[],char name[10][8])
{
int top,bott,mid,loca,sign;
top=0;
bott=9;
loca=0;
sign=1;
if((n<num[0])||(N>num[9]))
loca=-1;
while((sign==1) && (top<=bott))
{mid=(bott+top)/2;
if(n==num[mid])
{loca=mid;
printf("No. %d,his name is %s.\n",n,name[loca]);
sign=-1;
}
else if(n<num[mid])
bott=mid-1;
else
top=mid+1;
}
if(sign==1||loca==-1)
printf("can not find%d.\n",n);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伏从灵000
2015-05-06 · TA获得超过234个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:175万
展开全部
c语言不允许函数的嵌套定义。
比如:
void funca(void)
{
...
void funcb(void)
{

}
}

仔细检查下,有没有这种形式的函数定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式