题目描述:
输入N个学生的信息,然后进行查询。
输入:
输入的第一行为N,即学生的个数(N<=1000)
接下来的N行包括N个学生的信息,信息格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04
输出:
输出M行,每行包括一个对应于查询的学生的信息。
如果没有对应的学生信息,则输出“No Answer!”
样例输入:
4
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
5
02
03
01
04
03
样例输出:
02 刘唐 男 23
03 张军 男 19
01 李江 男 21
04 王娜 女 19
03 张军 男 19
来源:
清华大学计算机研究生机试真题

解题思路: 先将输入的学生按学号排序重新存好, 然后采用二分查找法.

#include<bits/stdc++.h>
using namespace std;  struct Student{//用于表示学生的结构体char no[100];//学号 char name[100];//姓名int age; //年龄char sex[5];//性别bool operator < (const Student &A) const{//重载小于运算符使其能够使用sort函数排序 return strcmp(no, A.no) < 0; }
}buf[1001];int main(){int n;while(scanf("%d", &n) != EOF){for(int i=0; i<n; i++){scanf("%s%s%s%d", &buf[i].no, &buf[i].name, &buf[i].sex, &buf[i].age); }sort(buf, buf+n);//对数组排序使其按照学号升序排列 int t;cin >> t;//有t组询问while(t--){int ans = -1; // 目标元素下标, 初始化为-1char x[30];scanf("%s", x);//带查找学号int top = n-1, base = 0; //初试时,开始下标0,结束下标n-1,查找子集为整个数组while(top>=base){//当查找子集不为空集时重复二分查找 int mid = (top + base) / 2; //计算中间点下标int tmp = strcmp(buf[mid].no, x); //比较中间点学号与目标学号if(tmp==0){ans = mid;break; // 若相等,则查找完成跳出二分查找 } else if(tmp>0) top = mid - 1;//若大于,则结束下标变为中间点前一个点下标else base= mid+1; //若小于,则开始点下标变为中间点后一个点坐标 } if(ans==-1){//若查找失败 cout << "No Answer!" << endl;}else printf("%s %s %s %d\n", buf[ans].no, buf[ans].name, buf[ans].sex, buf[ans].age);//若查找成功,则输出 } }return 0;
}

本题在线测试入口

结束


[查找问题] 例5.2 查找学生信息相关推荐

  1. 基于SSM的学生信息管理系统

    基于SSM的学生信息管理系统 摘要 随着互联网技术和国内教育行业持续高速地发展,管理员为了能够更加方便地管理学生信息,学生信息管理系统被开发出来的目的是为了能够更加方便管理学生信息,一个良好的学生信息 ...

  2. QT大作业之---学生信息管理系统

    金樽清酒斗十千,玉盘珍羞直万钱. 停杯投箸不能食,拔剑四顾心茫然. 欲渡黄河冰塞川,将登太行雪满山. 闲来垂钓碧溪上,忽复乘舟梦日边. 行路难!行路难!多歧路,今安在? 长风破浪会有时,直挂云帆济沧海 ...

  3. 【java毕业设计】基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于javaEE+SSH+SQL Server的学生信息管理系统设计与实现,文章 ...

  4. 学生信息管理系统(c++源代码实现)

    学生信息管理系统 包括: 学号 姓名 性别 年龄 系别 学生成绩 实现 ****************************************" 1.增加学生信息 2.显示学生信息 ...

  5. 按姓名删除学生信息C语言无指针,学生信息管理系统修改

    北京工业大学耿丹学院 c语言设计课程报告 课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201 2016年5月10日 一对c语言指针链表的体会 ----- ...

  6. 你哪来这么多事(二):学生信息查找

    学生信息查找 Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld Description 某班 有n个学生(不超过100), ...

  7. 1168 查找学生信息

    题目描述 先录入n个学生信息,包括学生的学号和期末考试总成绩.再给定某学生学号,查找是否有该学生的相应信息. 输入要求 第一行输入一个整数n(n<100),表示有n个学生; 后面n行输入这n个学 ...

  8. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  9. 学籍管理查找学生信息 c语言,【C语言期末实训】学生学籍管理系统

    目录: 一,设计要求1,总体要求:2,具体功能: 二,设计框架 三,程序代码1,声明函数和头文件2,声明结构体3,声明全局变量4,主体启动函数5,主菜单函数6,创建学生档案函数7,编辑学生档案函数8, ...

最新文章

  1. bzoj 1225 暴搜动态规划
  2. Python IDE 详细攻略,拿来吧你~
  3. jvm虚拟机_一文入门jvm虚拟机
  4. S5PV210裸机之SDRAM
  5. 根据用户查进程_Linux进程之如何查看进程详情?
  6. 数据库中单个表数据备份
  7. 拖拽实例 对于设置监听setInterval 的理解
  8. Qt + DbgView : 将qDebug输出到DbgView或终端
  9. 高德地图两点间距离计算函数
  10. 免费下载《WindowsPE权威指南》百度云
  11. Windows搭建基于EClipse的CppUTest单元测试环境
  12. 苹果App卡审怎么办?
  13. CF 449E Jzzhu and Squares解题报告
  14. java graphics2d旋转_JAVA用Graphics2D实现图片旋转,缩放,合成
  15. 临床公共数据库挖掘系列1---seer数据库注册
  16. docker Hub-Node模式运行selenium grid4,经常遇到用例运行到60%-65%时无法继续运行
  17. LINUX TC介绍
  18. 计算机基础--作业5,计算机基础第5次作业-第五章-Powerpoint知识题 (精选可编辑)...
  19. thymeleaf 修改css,用thymeleaf设置CSS样式属性
  20. stm32入门——定时器中断和中断优先级简介

热门文章

  1. 预培训个人项目(地铁线路规划)
  2. Jetpack 迁移到 androidX support MD
  3. Django中Form组件的使用
  4. 独立完成一个城市选择组件(阿里前端题目,内附知识点、思路)
  5. aaS软件的必要特征分析,一定是多租户特性吗
  6. WinAPI——钩子函数大全
  7. sql脚本比较大,sqlserver 无法导入,就用cmd命令执行
  8. 【数据库系统设计】SQL语言实验
  9. Java 实现计时器
  10. RedHat停止维护CentOS!CentOS 创建者发起新项目,刚上线空白项目Star数已破两千