大家好,欢迎来到IT知识分享网。
//15.写几个函数: //①输人10个职工的姓名和职工号; //②按职工号由小到大顺序排序, 姓名顺序也随之调整; //③要求输人一个职工号, 用折半查找法找出该职工的姓名, 从主函数输人要查找的职工号, 输出该职工姓名。 // //职工姓名用字符串存,职工号用整型存 //设两个1维数组,一个为姓名的2维数组,因为名字是字符串 //一个为职工号数组 #include<stdio.h> #define M 2 void in(char name[][128],int d[]) //输入函数 { int i; for (i = 0; i < M; i++) { printf("输入 No.%d 名字:", i + 1); scanf("%s", name[i]); printf("输入 No.%d 职工号:", i + 1); scanf("%d", &d[i]); } } void sort(char name[][128], int d[]) //排序函数 { int i, j, temp; char tm[20]; for (i = 0; i < M; i++) for (j = i + 1; j < M; j++) { if (d[i] > d[j]) { //职工号交换 temp = d[i]; d[i] = d[j]; d[j] = temp; //名字交换 strcpy(tm, name[i]); strcpy(name[i], name[j]); strcpy(name[j], tm); } } printf("排完序后:\n"); for (i = 0; i < M; i++) printf("%d,%s\n", d[i], name[i]); } void search(char name[][128], int d[], int x) //查找函数 { int low, high, mid; low = 0; high = M-1; while (low <= high) { mid = (low + high) / 2; if (x > d[mid]) low = mid + 1; else if (x < d[mid]) high = mid - 1; else { printf("%s\n", name[mid]); break; } } if (low>high) printf("查无此人!\n"); } int main() { char name[M][128] = { 0 }; int d[128] = { 0 }; int x; in(name, d); sort(name, d); printf("输入你要查找的职工号:\n"); scanf("%d", &x); search(name, d, x); return 0; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/102672.html