求助一道c题,不知道哪错了

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:48:10
写几个函数(C程序):(1)输入10个职工的姓名和职工号:(1)按职工号由小到大排序,姓名也随之调整;(3)要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
不知道是那出错了,希望哪位高手帮忙解决下:
#include<stdio.h>
#include<string.h>
void scan(char m[][30],int n[],int p)
{
int i;

for(i=0;i<p;i++)
{
printf("请输入第%d个学生姓名\n",i);
getchar() ;
gets(m[i]);
printf("请输入第%d个学生对应的学号\n",i);
//getchar() ;
scanf("%d",&n[i]);
}

}
void compositor(char m[][30],int n[])
{
int i,j,t;
char s[30];
for(j=0;j<10-1;j++)
{
for(i=0;i<10-j-1;i++)
{
if(n[i]>n[i+1])
{
t=n[i]; strcpy(s,m[i]);
n[i]=n[i+1];strcpy(m[i],m[i+1]);
n[i+1]=t; strcpy(m[i+1],s);
}
}
}

}
lookup(char m[][30],int n[],int num)
{
int mid,head=0,end=9,i,k;
mid=(head+end)/2;
for(i

getchar() ;
gets(m[i]);
先存一个字母。然后再把剩下的字母递给m[i]???这个怎么可能对呢??

if(num==n[mid])
{
k=mid;
// puts(m[num]);
break;
}
if(num>n[mid])
head=mid+1;
if(num<n[mid])
end=mid-1;
这个之前要加个while(head<=end)
因为他是一直循环二分的。你不加的话。就只查了一个二分