关闭

题目1069:查找学生信息

251人阅读 评论(0) 收藏 举报
题目1069:查找学生信息

时间限制:1 秒

内存限制:32 兆

//重点在于二分查找

题目描述:

 输入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 <iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
struct Student
{
    char no[100];//题目中,学号前有数字0,所以用char来存储
    char name[100];
    char sex[5];
    int age;
    bool operator < (const Student & A) const
    {
        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;
        scanf("%d",&t);
        while(t--)
        {
            int ans=-1;
            char x[30];
            scanf("%s",x);
            int top=n-1,base=0;
            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)
            {
                printf("No Answer!\n");
            }
            else
            {
                printf("%s %s %s %d\n",buf[ans].no,buf[ans].name,buf[ans].sex,buf[ans].age);
            }
        }
    }
    return 0;
}

 

0
0
查看评论

题目1069:查找学生信息

题目描述:  输入N个学生的信息,然后进行查询。 输入:  输入的第一行为N,即学生的个数(N 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 然后输入一个M...
  • ych19871020
  • ych19871020
  • 2013-09-24 20:57
  • 982

【九度】题目1069:查找学生信息

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14429 解决:3921 题目描述:  输入N个学生的信息,然后进行查询。 输入:  输入的第一行为N,即学生的个数(N 接下来的N行包括N个学生的信息,信息...
  • qq_24573717
  • qq_24573717
  • 2017-01-08 17:06
  • 113

九度题目1069:查找学生信息

原题链接:http://ac.jobdu.com/problem.php?pid=1069 题目描述:  输入N个学生的信息,然后进行查询。 输入:  输入的第一行为N,即学生的个数(N 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 ...
  • thepeakofmountain
  • thepeakofmountain
  • 2014-03-24 20:16
  • 682

18-题目1069:查找学生信息

http://ac.jobdu.com/problem.php?pid=1069 题目描述:  输入N个学生的信息,然后进行查询 #include #include #include #include using namespace std; typedef str...
  • u011392877
  • u011392877
  • 2016-02-21 22:24
  • 141

题目1069:查找学生信息 题目18

本题目多用数组 题目描述:  输入N个学生的信息,然后进行查询。 输入:  输入的第一行为N,即学生的个数(N 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 ...
  • huiyuanai222
  • huiyuanai222
  • 2014-10-10 19:36
  • 323

1069查找学生信息

#include #include #include using namespace std; struct Student{//表示学生个体的结构体 char no[100];//学号 char name[100];//姓名 int age;//年龄 char sex[5];//性别 ...
  • hongmeipopo73
  • hongmeipopo73
  • 2018-01-31 10:11
  • 51

题目1069:查找学生信息 九度OJ

题目1069:查找学生信息 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:18234 解决:4919 题目描述:  输入N个学生的信息,然后进行查询。 输入:  输入的第一行为N,即学生的个数(...
  • qq_34447388
  • qq_34447388
  • 2017-04-06 20:56
  • 192

九度OJ 题目1069:查找学生信息

一.  题目描述:  输入N个学生的信息,然后进行查询。 输入:  输入的第一行为N,即学生的个数(N 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 然后输入一个M(M 02 03 ...
  • lhyer
  • lhyer
  • 2015-08-19 16:07
  • 389

【九度OJ】题目1069:查找学生信息 解题报告

【九度OJ】题目1069:查找学生信息 解题报告标签(空格分隔): 九度OJ[LeetCode]http://ac.jobdu.com/problem.php?pid=1069题目描述:输入N个学生的信息,然后进行查询。输入:输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N...
  • fuxuemingzhu
  • fuxuemingzhu
  • 2017-02-27 19:29
  • 445

<九度 OJ>题目1069:查找学生信息

输入: 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息格式如下:
  • EbowTang
  • EbowTang
  • 2014-07-21 20:29
  • 786
    个人资料
    • 访问:70983次
    • 积分:1351
    • 等级:
    • 排名:千里之外
    • 原创:149篇
    • 转载:8篇
    • 译文:0篇
    • 评论:5条
    最新评论