| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 522 人关注过本帖
标题:哎,看了很多遍了,仍不知道自己错误在哪儿,求助啊!谢谢各位大虾!!!
取消只看楼主 加入收藏
zhoujunpeiil
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-16
结帖率:0
收藏
已结贴  问题点数:10 回复次数:1 
哎,看了很多遍了,仍不知道自己错误在哪儿,求助啊!谢谢各位大虾!!!
谭浩强版作业  写出几个函数:①输入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);
}
搜索更多相关主题的帖子: 姓名 
2011-05-16 21:30
zhoujunpeiil
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-16
收藏
得分:0 
回复 2楼 ansic
这是个不错的习惯
2011-05-28 08:53
快速回复:哎,看了很多遍了,仍不知道自己错误在哪儿,求助啊!谢谢各位大虾!! ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015056 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved