习题 7.15 写几个函数:1.输入10个职工的姓名和职工号;2.按职工号由小到大顺序排序,姓名顺序也随之调整;。。。

来源:互联网 发布:乐清知临学校叶建新 编辑:程序博客网 时间:2024/04/28 06:09

C程序设计(第四版) 谭浩强 习题7.15 个人设计

习题 7.15 写几个函数:

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

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

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

代码块:

#include <stdio.h>#include <string.h>void input (char na[][20], int nu[]);void sorts (char na[][20], int nu[]);void search (char na[][20], int nu[], int x);main(){    char name[10][20];    int num[10], numb, i;    input (name, num);    sorts (name, num);    for (i = 0; i < 10; i++){        printf("%8s ", name[i]);        printf("%d\n", num[i]);    }    printf("Input your number:");    scanf("%d", &numb);    search(name, num, numb);    return 0;}void input (char na[][20], int nu[]){    int i;    for (i = 0; i < 10; i++){        printf("Input No.%d name:", i+1);        scanf("%s", na[i]);        printf("Input No.%d number:", i+1);        scanf("%d", &nu[i]);    }}void sorts (char na[][20], int nu[]){    int i, j, temp;    char tm[20];    for (i = 0; i < 10; i++)        for (j = i+1; j < 10; j++){            if (nu[i] > nu[j]){                temp = nu[i];                nu[i] = nu[j];                nu[j] = temp;                strcpy(tm, na[i]);                strcpy(na[i], na[j]);                strcpy(na[j], tm);            }        }}void search (char na[][20], int nu[], int x){    int low, high, mid;    low = 0;    high = 9;    while (low <= high){        mid = (low + high) / 2;        if (x > nu[mid])            low = mid + 1;        else if (x < nu[mid])            high = mid - 1;        else if (x == nu[mid]){            printf("%s\n", na[mid]);            break;        }    }    if (x != nu[mid])        printf("No match!\n");}
阅读全文
1 0