PAT 1072. 开学寄语

来源:互联网 发布:电商推荐算法 编辑:程序博客网 时间:2024/05/06 21:27

PAT 1072. 开学寄语(20)

描述

下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面、理发、整衣,然后思过、读书、锻炼、明智、开悟、精进。而后必成大器也!

这里写图片描述
本题要求你写个程序帮助这所学校的老师检查所有学生的物品,以助其成大器。
输入

输入第一行给出两个正整数N(<= 1000)和M(<= 6),分别是学生人数和需要被查缴的物品种类数。第二行给出M个需要被查缴的物品编号,其中编号为4位数字。随后N行,每行给出一位学生的姓名缩写(由1-4个大写英文字母组成)、个人物品数量K(0 <= K <= 10)、以及K个物品的编号。

输出

顺次检查每个学生携带的物品,如果有需要被查缴的物品存在,则按以下格式输出该生的信息和其需要被查缴的物品的信息(注意行末不得有多余空格):姓名缩写: 物品编号1 物品编号2 ……最后一行输出存在问题的学生的总人数和被查缴物品的总数。

样例输入

4 22333 6666CYLL 3 1234 2345 3456U 4 9966 6666 8888 6666GG 2 2333 7777JJ 3 0012 6666 2333

样例输出

U: 6666 6666GG: 2333JJ: 6666 23333 5

https://www.patest.cn/contests/pat-b-practise/1072

问题分析:

注意控制格式输入输出。

*采用一个book【10000】索引数组来表示违禁物品,是违禁物品将内容置为1。
对于每个输入的学生,记录姓名。用输入的编号去访问book【temp】来确定是否是违禁物品,如果是用一个数组来存储有的违禁物品,判断是否输出,控制输出格式,最后没有空格。
注意输出违禁物品的格式,如00001要输出00001
统计违禁物品数量,统计含有违禁物品的人数,最后输出。
*

//代码实现,c版本#include<stdio.h>int main(){    char name[10];    //book[]是一个索引数组,下标代表编号,内容代表是否是违禁物品    int M,N,book[10000]={0},temp,i,peo=0,count=0,flag=0,out[10],outcount=0;    scanf("%d %d",&N,&M);    while(M--)//输入违禁物品的编号    {        scanf("%d",&temp);        book[temp]=1;    }    while(N--)//输入每个学生的信息    {        flag=0,outcount=0;//初始化        scanf("%s %d",name,&i);        while(i--)        {            scanf("%d",&temp);            if(book[temp])//对每个学生的每个物品进行检查            {                out[outcount++]=temp;                flag=1;            }        }        count+=outcount;//count代表违禁物品的总数        i=0;        if(flag)//判断是否输出        {            printf("%s: ",name);            while(i<outcount)            {                if(i!=0)printf(" ");//控制格式化输出                printf("%04d",out[i++]);            }            printf("\n");            peo++;        }    }    printf("%d %d",peo,count);    return 0;}

2017年11月4日

原创粉丝点击