7-6 出勤记录 (5分)

7-6 出勤记录 (5分)
ACM俱乐部每次都会统计成员的出勤记录。迟到会被记录一个A,缺席会被记录一个C,按时上课会被记录一个M。

一学期结束,Rhythm的出勤记录可以看成是一个只包含ACM的字符串,例如"MMMMAMMMACAAM……"。

如果Rhythm整学期缺席不超过1次,并且没有连续迟到3次,Rhythm的出勤记录就算合格,否则Rhythm将要退出俱乐部。

现在给出Rhythm的出勤记录,你能判断他是否合格么?

输入格式:
第一行包含一个整数 T (1 <= T <= 10),代表测试数据的组数。

以下 T 行每行一个长度不超过100的字符串S,代表Rhythm的出勤记录。

输出格式:
对于每一份出勤记录,输出 YES 或者 NO 表示该份记录是否合格。

输入样例:
3
AAMAACAA
MAAAMMMM
MMCCMMMM

输出样例:
YES
NO
NO

#include <bits/stdc++.h> 
using namespace std;
int main()
{
	int n,b=0,f1=1,f2=1;	
	char a[110];
	cin>>n;
	while(n--)
	{
		b=0;f1=1;f2=1;//赋初值******一直错误的原因 
		cin>>a;
		for(int i=0;i<strlen(a);i++)
		{
			if(a[i]=='C')
			b++;
		} 
		if(strstr(a,"AAA"))
			f2=0;
		if(b>=2)
		{
			f1=0;
		}
	if(f1==0||f2==0)
		printf("NO\n");
	else 
		printf("YES\n");
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
试题:该程序(Test.exe)用于统计、记录某单位全体员工一天的考勤情况。 输入:员工基本信息文件(文本文件)、全天出入记录的数据文件(文本文件) 1. 员工基本信息文件(参见employee.txt) 每行记录一位员工的基本信息,格式为:姓名,工号(例如:张三,34251),其中姓名(不超过20个字符)和工号(整型); 2. 全天出入记录的数据文件(参见log.txt) 该单位的门禁系统每天生成一个员工全天出入记录的数据文件,记录出入的工作人员工号、出入的时间以及出入类型(O:出,I:入), 记录按时间先后记录 文件中每行记录一次出或入的信息 每条记录的格式为:工号,时间,类型(例如:34251,08:30,I),其中时间格式为hh:mm。 程序要完成的功能 请通过程序读取员工基本信息文件和门禁系统全天出入记录的数据文件,计算各工作人员当天的总共在岗时间,并将结果保存至c:\result.txt文件中。要求结果中包含有姓名,工号,在岗时间等信息。 注:员工基本信息文件和数据文件的名称通过命令行参数的形式输入 (例如:Test.exe employee.txt log.txt)。 输出:员工在岗时间统计文件(文本文件) 员工在岗时间统计文件(参见result.txt) 文件中每行记录一位工作人员的在岗时间信息。 格式为:姓名,工号,在岗时间(例如:张三,34251,8小时10分钟)。
好的,这是Java PTA7-5出勤统计的题目描述,需要你编写一个程序来统计每个员工的出勤情况。以下是参考代码: ``` import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Map<String, Integer> map = new HashMap<>(); while (sc.hasNext()) { String line = sc.nextLine(); if (line.equals("end")) { break; } String[] names = line.split(" "); for (String name : names) { if (!map.containsKey(name)) { map.put(name, 1); } else { map.put(name, map.get(name) + 1); } } } List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o1.getKey().compareTo(o2.getKey()); } }); for (Map.Entry<String, Integer> entry : list) { System.out.println(entry.getKey() + " " + entry.getValue()); } } } ``` 程序的基本思路是:使用 `Scanner` 读入每一行输入,然后使用 `split` 方法将每一行的员工名单分割成一个字符串数组,接着遍历该数组中的每个元素,如果该元素在 `map` 中不存在,则将其添加到 `map` 中并将其出勤次数设为1,否则将其对应的值加1。最后,使用 `Collections.sort` 方法将 `map` 转化为一个 `List` 并按照键名进行排序,最后遍历该 `List` 打印每个员工的出勤情况。 希望这个回答能够帮到你,如果还有其他问题,可以继续问我哦。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值