输入3个职工的姓名和职工号,按职工号从小到大排列,姓名顺序也随之调整。并输入一个职工号,用折半查找法查找该职工姓名。不知道哪里错了,输入完毕就退出程序,不知道怎么调试
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main(){
void input(int num[],char name[][8]);
void sort(int num[],char name[][8]);
void find(int num[],char name[][8],int num1);
int num[N];//存放职工号
char name[N][8];//存放姓名
input(num,name);
sort(num,name);
int n;
printf("要查找的职工号:\n");
scanf("%d",&n);
find(num,name,n);
}
void input(int num[],char name[][8]){
int i;
for(i=0;i<N;i++){
printf("NO.:");
scanf("%d",&num[i]);
printf("name:");
getchar();//回车要清除掉
gets(name[i]);
}
}
void sort(int num[],char name[][8]){ //排序
int i,j,t,min;
char temp[8];
for(i=0;i<N-1;i++){
min=i;
for(j=i+1;j<=N-1;j++)
if(num[j]<num[min])min=j;
t=num[min];
strcpy(temp[8],name[min]);
num[min]=num[i];
strcpy(name[min],name[i]);
num[i]=t;
strcpy(name[i],temp[8]);
}
for(i=0;i<N;i++)
printf("%d %s\n",num[i],name[i]);
}
void find(int num[],char name[][8],int num1){ //查找
int head=0;
int end=N-1;
int mid=(head+end)/2;
int flag=0;
while(head<=end){
if(num1<num[mid])end=mid-1;
else if(num1>num[mid])head=mid+1;
else{
flag=1;
printf("找到了,该职工姓名为:%s\n",name[mid]);
}
}
if(flag=0)printf("没找到该职工号!\n");
}