user-0 提问: 啊啊啊啊，不知道哪里出了问题

回复:
user: user-1
content: 受教了，我们习以为常把函数声明写到外部了。

user: user-2
content: 引用 3 楼 shauew 的回复:void input(int num[],char name[][100]);     void paixu(int num[],char name[][100]);     void chazhao(int num[],char name[][100],int x);  这三个函数为啥在main里面声明？实体又不写在main里面？ 这是是函数调用的一种方式：因为他的自定义函数写在main函数后面，而main函数又调用了自定义函数，所以需要在main函数中声明； 当然还有另一种方式：自定义函数写在main函数前面，就不需要在main函数中声明了！

user: user-1
content: void input(int num[],char name[][100]);     void paixu(int num[],char name[][100]);     void chazhao(int num[],char name[][100],int x);  这三个函数为啥在main里面声明？实体又不写在main里面？

user: user-2
content: 总共有以下三个问题： 1、C语言的语法错误； 2、二分查找的逻辑思维不清晰，你把low和top的赋值写在循环体内了，岂不是陷入死循环了； 3、函数的参数调用出问题，你的自定义chaozhao函数里面的参数明明是x，在循环里面判断怎么成了p了呢？ 以后有什么问题可以问我，可以看看我的博文，直接上修改后的代码，错误之处我表明了的：  #include<stdio.h> #include<string.h> int main() { 	void input(int num[],char name[][100]); 	void paixu(int num[],char name[][100]); 	void chazhao(int num[],char name[][100],int x); 	int a[10],q; 	char b[10][100]; 	input(a,b); 	paixu(a,b); 	printf("输入职工号"); 	scanf("%d",&q); 	chazhao(a,b,q); 	return 0; } void input(int num[],char name[][100]) { 	int i; 	for(i=0; i<10; i++) { 		printf("职工工号："); 		scanf("%d",&num[i]);//语法错误，缺少& 		printf("职工名字:"); 		getchar(); 		gets(name[i]); 	}  } void paixu(int num[],char name[][100]) { 	int i,j,t; 	char p[9][100]; 	for(j=0; j<9; j++) 		for(i=0; i<9-j; i++) { 			if(num[i]>num[i+1]) { 				t=num[i]; 				num[i]=num[i+1]; 				num[i+1]=t; 				strcpy(p[i],name[i]); 				strcpy(name[i],name[i+1]); 				strcpy(name[i+1],p[i]); 			} 		} 	for(i=0; i<10; i++) {  		printf("号码：%d，名字：%s\n",num[i],name[i]); 	} } void chazhao(int num[],char name[][100],int x) { 	int top,low,q,z=1,b=1,ban; 	char w; 	low=0; //这段代码应该写在循环外吧！不然你这每次都重新赋值，不就是死循环了吗？ 	top=9; 	while(low<=top) { 		ban=(low+top)/2; 		if(x==num[ban]) {//函数调用参数出问题，参数明明是x,这里怎么成了q了呢？  			printf("%d,%s",num[ban],name[ban]); 			break;  		} else if(x<num[ban]) { 			top=ban-1; 		} else if(x>num[ban]) { 			low=ban+1; 		} 	} 	if(x!=num[ban]) 		printf("无"); }

user: user-3
content: #include<stdio.h> #include<string.h>  int main() {     void input(int num[],char name[][100]);     void paixu(int num[],char name[][100]);     void chazhao(int num[],char name[][100],int x);     int a[10],q;     char b[10][100];     input(a,b);     paixu(a,b);     printf("输入职工号");     scanf("%d",&q);     chazhao(a,b,q);     return 0; }  void input(int num[], char name[][100]) {     int i;     for(i=0;i<10;i++)     {         printf("职工工号：");         //scanf("%d", num[i]);         scanf("%d", &num[i]);         printf("职工名字:");         getchar();         gets(name[i]);     }  } void paixu(int num[],char name[][100]) {     int i,j,t;     //char p[9][100];     char str[100];      for(j=0;j<9;j++)         for(i=0;i<9-j;i++)         {             if(num[i] > num[i+1])             {                 t=num[i];num[i]=num[i+1];num[i+1]=t;                 strcpy(str,name[i]);                 strcpy(name[i],name[i+1]);                 strcpy(name[i+1], str);             }         }     for(i=0;i<10;i++)     {          printf("号码：%d，名字：%s\n",num[i],name[i]);     } } void chazhao(int num[],char name[][100],int x) {     int top,low,q,z=1,b=1,ban;     char w;      low = 0;     top = 9;     while(low<=top)     {         //low=0;         //top=9;         ban=(low+top)/2;         //if(q==num[ban])         if(x ==num[ban])         {             printf("%d,%s",num[ban],name[ban]);             break;          }         //else if(q<num[ban])         else if(x<num[ban])         {             top=ban-1;         }         //else if(q>num[ban])         else if(x>num[ban])         {             low=ban+1;         }     }     //if(x!=num[ban])     if(low > top)         printf("无"); }  供参考！