您的位置:首页 > 其它

PAT 1072. 开学寄语

2017-11-04 11:15 399 查看

PAT 1072. 开学寄语(20)

描述

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




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

输入

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


输出

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


样例输入

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


样例输出

U: 6666 6666
GG: 2333
JJ: 6666 2333
3 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日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT乙级