写几个函数 输入10个职工的姓名和职工号 C语言

2016-06-18 13:21:19  分类: c程序设计第四版谭浩强课后答案  参与:

 写几个函数:
1)输入10个职工的姓名和职工号;
2)按职工号由小到大的顺序排序;
3)要求输入一个职工号,用折半法查找出该职工的姓名,从主函数输入要查找的职工号,输出该职工的姓名。


c程序设计(第四版)学习辅导 谭浩强 编著

【c源程序】
#include <stdio.h>
#include <string.h>
#define N 10
int main()
   {void input(int [],char name[][8]);
    void sort(int [],char name[][8]);
 void search(int ,int [],char name[][8]);
 int num[N],number,flag=1,c;
    char name[N][8];
    input(num,name);
    sort(num,name);
    while (flag==1)
       {printf("\ninput number to look for:");
     scanf("%d",&number);
     search(number,num,name);
     printf("continue ot not(Y/N)?");
     getchar();
     c=getchar();
     if (c=='N'||c=='n')
       flag=0;
       }
 return 0;
   }

void input(int num[],char name[N][8])
 {int i;
  for (i=0;i<N;i++)
   {printf("input NO.: ");
    scanf("%d",&num[i]);
    printf("input name: ");
    getchar();
    gets(name[i]);
   }
 }

void sort(int num[],char name[N][8])
 { int i,j,min,templ;
   char temp2[8];
   for (i=0;i<N-1;i++)
    {min=i;
     for (j=i;j<N;j++)
       if (num[min]>num[j])  min=j;
     templ=num[i];
     strcpy(temp2,name[i]);
     num[i]=num[min];
     strcpy (name[i],name[min]);
     num[min]=templ;
     strcpy(name[min],temp2);
     }
    printf("\n result:\n");
    for (i=0;i<N;i++)
       printf("\n %5d%10s",num[i],name[i]);
 }

void search(int n,int num[],char name[N][8])
  {int top,bott,mid,loca,sign;
   top=0;
   bott=N-1;
   loca=0;
   sign=1;
   if ((n<num[0])||(n>num[N-1]))
  loca=-1;
   while((sign==1) && (top<=bott))
 {mid=(bott+top)/2;
  if (n==num[mid])
    {loca=mid;
     printf("NO. %d , his name is %s.\n",n,name[loca]);
     sign=-1;
    }
  else if (n<num[mid])
     bott=mid-1;
  else
     top=mid+1;
 }
   if (sign==1 || loca==-1)
       printf("%d not been found.\n",n);
  }

  

来源:c程序设计第四版谭浩强课后答案

本文链接:http://www.wb98.com/c/post/tanhaoqiang_7.15.html

本站文章搜索:

<< 上一篇下一篇 >>

搜索

网站分类

Tags列表

赞助商链接