哎,看了很多遍了,仍不知道自己错误在哪儿,求助啊!谢谢各位大虾!!!
谭浩强版作业 写出几个函数:①输入10个职工姓名和职工号②按职工号由小到大调整,姓名顺序也随之调整③要求输入一个职工号,用折半法找出该职工姓名从主函数输入职工号,输出职工姓名。下面是我的做法:
#include <stdio.h>
void input(char name[10][10],int num[10])
{ int i;
for(i=0;i<10;i++)
{printf("Please input a name:");
gets(name[i]);
printf("\nPlease input number:");
scanf("%d",&num[i]);}
}
void sort(char name[10][10],int num[10])
{ int i,j,temp1;
char temp2[10];
for(i=0;i<9;i++)
{for(j=i;j<10;j++)
if(num[i]>num[j])
temp1=num[i];
num[i]=num[j];
num[j]=temp1;
strcpy(temp2,name[i][10]);
strcpy(name[i][10],name[j][10]);
strcpy(name[j][10],temp2);}
for(i=0;i<10;i++)
printf("\n%4d%10s",num[i],name[i]);
}
void search(int n,num[10],char name[10][10])
{ int left,right,mid,flag;
left=0;right=9;flag=0;
while(left<right)
{ mid=(left+right)/2;
if(num[mid])==n)
{ flag=1;
break;}
else {if(num[mid]>n)
right=mid-1;
else
left=mid+1;
}
}
if(flag==1)
printf("%10s",name[mid+1]);
else
printf("\n无此员工");
}
void main()
{ int num[10],n;
char name[10][10];
input(name,num);
sort(name,num);
printf("\nPlesase input a number:");
scanf("%d",&n);
printf("\n");
search(n,num,name);
}