当前位置: 首页 > news >正文

每日一题——第一百零八题

题目: 写几个函数, ①输入10个职工的姓名和职工号 ②按照职工号由小到大排列, 姓名顺序也随之调整 ③要求输入一个职工号, 用折半查找找出该职工的姓名

#include<stdio.h>
#include<string.h>
#define MAX_EMPOLYEES 10//定义职工结构体
typedef struct {int id;char name[50];
} Employee;/// <summary>
/// 输入职工信息
/// </summary>
/// <param name="employees">职工结构体数组</param>
/// <param name="n">职工数量</param>
void inputEmployees(Employee employees[], int n) {for (int i = 0; i < n; i++){printf("请输入第 %d 位职工的ID和姓名:", i + 1);scanf_s("%d %s", &employees[i].id, employees[i].name);}
}/// <summary>
/// 按照职工号由小到大排序, 姓名顺序也随之调整
/// </summary>
/// <param name="employees">职工结构体数组</param>
/// <param name="n">职工数</param>
void sortEmployees(Employee employees[], int n) {for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - (i + 1); j++){if (employees[j].id > employees[j + 1].id) {Employee temp = employees[j];employees[j] = employees[j + 1];employees[j + 1] = temp;}}}
}/// <summary>
/// 使用折半查找,根据职工id查找出职工的姓名
/// </summary>
/// <param name="employees">职工结构体数组</param>
/// <param name="n">职工数</param>
/// <param name="id">职工号</param>
/// <returns></returns>
int binarySearch(Employee employees[], int n, int id) {int low = 0, high = n - 1;while (low <= high){int mid = low + (high + low) / 2;//下取整if (employees[mid].id == id) {return mid;}else if(employees[mid].id < id){low = mid + 1;}else{high = mid - 1;}}return -1; //未找到
}int main() {Employee employees[MAX_EMPOLYEES];//输入职工信息inputEmployees(employees, MAX_EMPOLYEES);//排序职工信息sortEmployees(employees, MAX_EMPOLYEES);//打印排序后的职工信息printf("排序后的职工信息为:\n");for (int i = 0; i < MAX_EMPOLYEES; i++){printf("ID: %d,  姓名: %s\n", employees[i].id, employees[i].name);}//查找职工int searchId;printf("请输入要查找的ID: ");scanf_s("%d", &searchId);int index = binarySearch(employees, MAX_EMPOLYEES, searchId);if (index != -1) {printf("找到:ID %d, 姓名 %s\n", employees[index].id, employees[index].name);}else{printf("未找到ID为 %d 的职工\n", searchId);}return 0;
}
http://www.lryc.cn/news/446926.html

相关文章:

  • 使用Python免费将pdf转为docx
  • 树莓派4B+UBUNTU20.04+静态ip+ssh配置
  • C#实现指南:将文件夹与exe合并为一个exe
  • linux信号 | 学习信号三步走 | 全解析信号的产生方式
  • C++ 刷题 使用到的一些有用的容器和函数
  • 【Kubernetes】常见面试题汇总(三十四)
  • C++标准库双向链表 list 中的insert函数实现。
  • 华为机考练习(golang)
  • 51单片机快速入门之按键应用拓展
  • 数据库 - MySQL的事务
  • 【Python机器学习】NLP信息提取——提取人物/事物关系
  • vector类
  • python常见的魔术方法
  • 自动化测试常用函数:弹窗、等待、导航、上传与参数设置
  • 【必看】2024国赛选题分布情况分析及数模国赛答辩指南~答辩不走弯路
  • 微服务注册中⼼1
  • 我设置了路由器自动切换ip,这会让我的账号登录地址经常改变吗
  • Nginx 限流实战教程和技巧
  • AlphaFold3 | 详解 AlphaFold3 的模型结构及其在不同类型的预测实验中的表现
  • 公交IC卡收单管理系统 多处 SQL注入致RCE漏洞复现
  • 淘客系统开发之卷轴模式系统源码功能分析
  • MoCo中的字典
  • Xcode16 iOS18 编译问题适配
  • 加密解密的艺术:探索Java中的DES算法
  • jQuery——层次选择器
  • MySQL常见面试总结
  • 记录一次学习--委派攻击学习
  • 前端列表数据太多导致页面卡顿就这么处理
  • 机器学习_神经网络_深度学习
  • MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块