2019315 输入学生信息,查询特定学号学生信息

本文介绍了一个使用C++实现的学生信息查找系统,系统通过结构体存储学生信息,并利用sort和二分查找算法进行高效排序和查找。文章详细展示了如何读取用户输入的学生数据,如何对这些数据进行排序,以及如何通过二分查找算法快速定位特定学生的详细信息。

 

#include<iostream>
#include <algorithm>

using namespace std;

struct st
{
    int no;
    char name[20];
    int age;
    char sex[10];
    bool operator < (const st &a)const
    {
        return no<a.no;
    }
}stu[100];

void show(st &d)
{
    cout<<d.no<<" "<<d.name<<" "<<d.age<<" "<<d.sex;
};



int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>stu[i].no>>stu[i].name>>stu[i].age>>stu[i].sex;

    sort(stu,stu+n);

    int b[100],x,flag=-1;//如果没有,则输出不存在。

    int base,top,mid;



    cin>>x;
    for(int i=0;i<x;i++)
        cin>>b[i];//输入学号


    for(int i=0;i<x;i++)
    {
       base=0;
       top=n-1;

    while(base<=top)
    {
        mid=(base+top)/2;
        if(b[i]>stu[mid].no) base=mid+1;
        else if(b[i]<stu[mid].no) top=mid-1;
        else if(b[i]==stu[mid].no) {flag=mid;break;}

    }
    if(flag==-1) cout<<"no noe in ti.";
    else show(stu[flag]);


    cout<<endl;

    }












    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值