嗨,别那么说 2016-04-30 02:30 采纳率: 100%
浏览 1375
已采纳

C语言--有木有大神帮帮看看我的折半法代码,已经自己研究了好长时间,还是弄不出来???

#include
#include
#define M 3
void inputName(char name[][121],double money[]);
void ouput(char name[][121],double money[]);
void sortPay(char name[][121],double money[]);
void sortName(char name[][121],double money[]);
int zhe(char name[][121],double money[]);
void main()
{
char name[M][121];
double money[M]={0};
char m[121];
int g;
inputName(name,money);
printf("输出原样:\n");
ouput(name,money);
sortPay(name,money);
printf("按工资输出:\n");
ouput(name,money);
sortName(name,money);
printf("按姓名输出:\n");
ouput(name,money);
printf("请输入要查找的职工姓名:");
gets(m);
g=zhe(name,money,m);
if(g!=-1)
{
printf("输出该职工%s\n",m);
}
else
{
printf("没有此人\n");
}

}
//写一个函数,输入m个职工的姓名和工资
void inputName(char name[][121],double money[])
{
int i;
for(i=0;i {
printf("输出职工姓名:");
scanf("%s",&name[i]);
printf("输入职工工资:");
scanf("%lf",&money[i]);
getchar();
}
printf("\n");
}
//写一个函数,输出m个职工的姓名和工资
void ouput(char name[][121],double money[])
{
int i;
for(i=0;i {
printf("%s %g\n",name[i],money[i]);
}
}
//写一个函数,对m个职工的工资进行升序排列,姓名也随着调整
void sortPay(char name[][121],double money[])
{
int i,j;
double t;
char x[121];
for(i=1;i {
for(j=0;j {
if(money[j] {
t=money[j];
money[j]=money[j+1];
money[j+1]=t;
strcpy(x,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],x);
}
}
}
}
//写一个函数,对m个职工的姓名进行升序排列,工资也随着调整
void sortName(char name[][121],double money[])
{
int i,j;
char xm[121];
double t;
for(i=1;i {
for(j=0;j {
if(strcmp(name[j],name[j+1]) {
strcpy(xm,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],xm);
t=money[j];
money[j]=money[j+1];
money[j+1]=t;
}
}
}
}
//写一个函数,findByName,用折半法按姓名查找指定的职工,找到返回数组下标,找不到返回-1
int zhe(char name[][121],double money[],char m[])
{
int top,bottom,mid;
top=0;
bottom=M-1;
mid=(top+bottom)/2;
while(top {
mid=(top+bottom)/2;
if(strcmp(m,name[mid][121]) {
top=mid+1;
}
else if(strcmp(m,name[mid][121])>0)
{
bottom=mid-1;
}
else
{
return mid;
}

}
return -1;

}
图片说明

  • 写回答

1条回答

  • 小灸舞 2016-04-30 02:54
    关注

    zhe函数里两个strcmp应该都改为strcmp(m,name[mid])<0吧?
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料