折半查找法(C程序设计,习题7.15笔记)

一.题目

写几个函数:

①输入10个职工的姓名和职工号.

②按职工号由小到大排序,姓名顺序也随之调整.

③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工的姓名.

二.代码

以下是我的解题方法,可能不是最优的方法,推荐看C程序设计习题集.

//笔记:
//1.把公有变量改成参数,会使函数成为模块化适用性强的函数.
//2.函数中需要循环,用有些复杂的条件判断break立即结束循环时,条件不要放在for语句头中,尤其还需要一些数值处理的时候,还有结束判断和数值更替计算在每次循环语句中最好分开,会稍微清晰一些.
#include 
#include 
void print_NameId(char name[10][20],int id[10],int count);
void enter_NameId(char name[10][20],int id[10],int count);
void fortById(char name[10][20],int id[10],int count);
void printTheName_enterId(int id_finding,char name_resluats[20],char name[10][20],int id[10],int count);
int main()
{
    char name[10][20];            //因为C语言数组只能为同一种数据类型,所以姓名和工号分别放在name,id两个数组中.
    int id[10],count=10,namelength=20;
    enter_NameId(name,id,count);
    fortById(name,id,count);
    print_NameId(name,id,count);

    int id_finding;
    char name_resluats[20];
    printf("Enter a id for find his name:");
    scanf("%d",&id_finding);      //地址符别忘了,我经常调试后发现这里没写地址符.
    printTheName_enterId(id_finding,name_resluats,name,id,count);
    printf("His name is %s.\n",name_resluats);
    return 0;
}
//打印数组
void print_NameId(char name[10][20],int id[10],int count)
{
    int i;
    for(i=0;iid_finding)last= firstOfBehindHalf; //所找值在0<=x

 

你可能感兴趣的:(C)