算法笔记3.2E:学生查询

题目描述


输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。


输入


测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),加下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。


输出


输出m行,每行表示查询的学生信息,格式参见样例。


样例输入


1
4
1 李江 男 21
2 刘唐 男 23
3 张军 男 19
4 王娜 女 19
2


样例输出


2 刘唐 男 23


代码:

#include<stdio.h>

const int nmax = 25;    //n最大值为20,预留空间

struct student{
    int num;    //学号
    char name[20];      //姓名
    char sex[5];        //性别
    int age;        //年龄
}stu[nmax];

int main(){
    int m;      //样例数
    int n;      //学生人数
    int l;      //查询的学号
    while(scanf("%d", &m) != EOF){
        scanf("%d", &n);
        
        for(int j = 1; j <= m; j++){
            for(int i = 1; i <= n; i++){
            scanf("%d %s %s %d", &stu[i].num, stu[i].name, stu[i].sex, &stu[i].age);
            }
            scanf("%d", &l);
            printf("%d %s %s %d", stu[l].num, stu[l].name, stu[l].sex, stu[l].age);
             if(j != m)
                printf("\n");
            }
        }
    }
    return 0;
}

总结:题目本身同题3.2C、D,涉及结构体

错误点:审题上出现错误,题目要求每次测试包含输入多组数据再进行一次查询。倘若理解成输入多组数据后在进行测试多次查询则会出现输出超限的错误提醒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值