两个错误!
运行成功的代码:
#include
#include
main()
{
char name[10][10],a[10];
int num[10],i,j,min,t,max,mi,mid,x,flag=0;
for(i=0;i<10;i++)
{ printf("输入职工姓名\n");
scanf("%s",&name[i]);
printf("输入职工的工号\n");
scanf("%d",&num[i]);
}
for(i=0;i<=9;i++)
{min=i;
for(j=i;j<10;j++)
if(num[j]
min=j;
t=num[i];
num[i]=num[min];
num[min]=t;
strcpy(a,name[i]);
strcpy(name[i],name[min]);
strcpy(name[min],a);
}
for(i=0;i<10;i++)
printf("%s,%d\n",name[i],num[i]);
printf("输入你所要查找的那个职工号\n");
scanf("%d",&x);//scanf用法取地址符
max=9;
mi=0;
mid=(max+mi)/2;
for(i=0;i<=9;i++)//你这儿i=0没有,那么i在上一个for循环后值为9,压根没查找
{
if(num[mid]==x)
{flag=1;break;}
if(num[mid]>x)
max=mid,mid=(max+mi)/2;
if (num[mid]
}
if(flag)
puts(name[mid]);
else if(flag==0)
printf("error");
}
代码有完善的地方,我只是改了你两个错误。
少个取地址符,其他没有错
scanf("%d",&);