【华为OD机试真题 C语言】25、考勤信息 | 机试真题+思路参考+代码解析

news/2024/11/25 19:20:49/

文章目录

    • 一、题目
      • 🎃题目描述
      • 🎃输入输出
      • 🎃样例1
      • 🎃样例2
    • 二、思路参考
    • 三、代码参考
  • 作者:KJ.JK


🍂个人博客首页: KJ.JK
 
🍂专栏介绍: 华为OD机试真题汇总,定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用C语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习


一、题目


🎃题目描述

公司用一个字符串来表示员工的出勤信息
absent:缺勤
late:迟到
leaveearly:早退
present:正常上班
现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:
缺勤不超过一次;
没有连续的迟到/早退;
任意连续7次考勤,缺勤/迟到/早退不超过3次


🎃输入输出

输入
用户的考勤数据字符串,记录条数 >= 1;
输入字符串长度 < 10000;
不存在非法输入
如:
2
present
present absent present present leaveearly present absent
 
输出
根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,
对于输入示例的结果应为:
true false


🎃样例1

输入
2
present
present present输出
true
true

🎃样例2

输入
2
present
present absent present present leaveearly present absent输出
true
false

二、思路参考

1、首先,读取一个整数n,表示有n个考勤数据字符串。2、使用循环,迭代n次,每次读取一行考勤数据字符串。3、在每次循环中,进行以下判断:a. 检查考勤数据字符串的长度是否大于等于7,因为需要满足连续7次考勤的条件。b. 如果字符串长度小于7,无法满足连续7次考勤的条件,直接输出"false"。c. 如果字符串长度大于等于7,继续进行下一步判断。d. 调用一个函数hasConsecutiveLateOrEarly,该函数用于判断字符串中是否包含连续的迟到或早退。e. 如果存在连续的迟到或早退,直接输出"false"。f. 如果不存在连续的迟到或早退,继续进行下一步判断。g. 调用一个函数hasValidAttendance,该函数用于判断字符串中是否满足连续7次考勤,缺勤/迟到/早退不超过3次的条件。h. 如果满足条件,输出"true";否则输出"false"4、完成循环后,结束程序。

三、代码参考

#include <stdio.h>
#include <stdbool.h>
#include <string.h>// 函数用于判断字符串中是否包含连续的迟到/早退
bool hasConsecutiveLateOrEarly(char* attendance, int length) {int count = 0;for (int i = 0; i < length; i++) {if (attendance[i] == 'l' || attendance[i] == 'e') {count++;if (count >= 2) {return true;}} else {count = 0;}}return false;
}// 函数用于判断字符串中是否满足连续7次考勤,缺勤/迟到/早退不超过3次的条件
bool hasValidAttendance(char* attendance, int length) {int count = 0;int absentCount = 0;int lateOrEarlyCount = 0;for (int i = 0; i < length; i++) {if (attendance[i] == 'a') {absentCount++;count++;} else if (attendance[i] == 'l' || attendance[i] == 'e') {lateOrEarlyCount++;count++;} else {count++;}if (count >= 7) {if (absentCount <= 3 && lateOrEarlyCount <= 3) {return true;} else {if (attendance[i - 6] == 'a') {absentCount--;} else if (attendance[i - 6] == 'l' || attendance[i - 6] == 'e') {lateOrEarlyCount--;}}}}return false;
}int main() {int n;scanf("%d\n", &n);while (n--) {char attendance[100];fgets(attendance, sizeof(attendance), stdin);attendance[strcspn(attendance, "\n")] = '\0';  // 去除字符串末尾的换行符bool valid = false;int length = strlen(attendance);if (length >= 7) {valid = !hasConsecutiveLateOrEarly(attendance, length) &&hasValidAttendance(attendance, length);}printf("%s\n", valid ? "true" : "false");}return 0;
}

作者:KJ.JK


http://www.ppmy.cn/news/337040.html

相关文章

2.21 alarm函数 2.22setitimer定时器函数

2.21 alarm函数 #include <unistd.h> unsigned int alarm(unsigned int seconds);功能&#xff1a;设置定时器&#xff08;闹钟&#xff09;。函数调用&#xff0c;开始倒计时&#xff0c;当倒计时为0的时候&#xff0c; 函数会给当前的进程发送一个信号&#xff1a;SIG…

【实战】体验训练Geneface

一.环境 conda activate geneface export PYTHONPATH./ CUDA_VISIBLE_DEVICES0 python tasks/run.py --configegs/datasets/lrs3/lm3d_syncnet.yaml --exp_namelrs3/syncnet 训练这篇出过的一些奇奇怪怪的问题基本上都记录在【环境搭建】40系一些奇奇怪怪的环境问题_weixin_50…

达人评测 i9 12900H和i5 12500h选哪个

i5 12500H为4大核8小核&#xff0c;12核心16线程设计&#xff0c;CPU主频 2.5GHz 最高睿频 4.5GHz 三级缓存为18MB 功耗(TDP) 45W.选 i5 12500H还是i9 12900H这些点很重要 http://www.adiannao.cn/dy i9 12900H采用7nm 制作工艺14核心20线程&#xff0c;主频为2.5GHz&#xff0…

大数据营销【3】

1.大数据获取的个人信息比传统调研获得的个人信息真实性 A.更低 B.更高 C.相同 D.不确定 2.分类变量使用&#xff08;&#xff09;建立预测模型 A.分类树 B.回归树 C.决策树 D.离散树 3.面向用户提供大数据一站式部署方案&#xff0c;包括数据中心和服务器等硬件、数据分析…

重磅推荐 | 孩子学习神器,双十二必买好物

受疫情黑天鹅的影响&#xff0c;线上智慧教学突飞猛进发展。专业、高效的特点带给学生不输于传统线下教育的感受&#xff0c;不少人对智慧教育的看法有所改观。但还是有不少家长认为教育线上化比传统教育缺乏了线下课堂教育的强制性&#xff0c;认为实用性并不高。可在疫情爆发…

程序设计竞赛推荐两本实用书给你

1 什么是程序设计竞赛 本书所指的程序设计竞赛是解题竞赛&#xff0c;指参赛者利用自己所学的计算机相关知识&#xff0c;在限定的时间内解决若干道具有一定难度的编程题目。这些题目一般都与某种算法有关&#xff0c;如果读者没有经过相关的训练&#xff0c;一般难以在限定时…

计算机管理下的打印机参数设置,提高办公效率 11种方法设置打印参数

提高办公效率 11种方法设置打印参数 发布时间:2012-03-12 23:44:45 作者:佚名 我要评论 每当对打印参数进行设置时,许多人都会将目光聚焦在页面设置上,或者打印纸张的选型上,而其他一些打印参数由于很少用到,因此常常会容易被人忽视掉;其实这些不常用的打印参数里隐…

RK3588平台开发系列讲解(USB篇)Linux Android USB软件架构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、高通平台USB软件架构二、USB 设备侧软件组成2.1、OTG driver2.2、Device controller driver2.3、Gadget framework2.4、Function drivers三、USB 主机侧软件3.1、Host controller driver3.2、USB core3.3、USB PHY…