//目前还存在许多bug

题目描述

一般 ACM程序设计比赛都是五个小时。但是比赛结束时,DB(DataBase)发现总罚时很大,DB就想知道这总罚时算得对不对。但由于DB数学不是很好,想让你写个程序帮他计算总罚时。

罚时规则:

每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。也就是,通过的题目的罚时等于第一次通过时颗与比赛开始时刻的时间差加上第一次通过之前该题的错误次数乘以20分钟,总罚时等于所有通过的题目的罚时相加。比如:比赛12:00:00开始,DB在12:06:00提交A题错误WA,12:17:00提交A题通过AC,12:40:00提交B题错误WA,12:43:00提交B题错误TLE。一场比赛下来,DB就做了一个题,总罚时为(12:17:00-12:00:00+20*1)=00:37:00,B题没有通过,不算罚时。

输入

第一行输入DB需要你帮助计算的总罚时的比赛次数T(0

注意:所有时间是24小时制,HH:MM:SS代表时:分:秒,不足两位的,前面补0。所有提交时间与比赛开始时间在同一天。评判结果只有AC代表通过。某些题目DB通过之后,可能会再次提交,但是不计罚时。

详见样例。

输出

对于每次比赛,输出一行,表示DB的总罚时(HH:MM:SS),不足两位,前面补0。保证总罚时的小时数不超过2位数。

样例输入

2

12:00:00

4

A 12:06:00 WA

A 12:17:00 AC

B 12:40:00 WA

B 12:43:00 TLE

12:00:00

2

A 12:50:00 AC

B 13:00:00 AC

样例输出

00:37:00

01:50:00

***************************************************************************

#include

struct date{

char qu;

int re[5];

int hour;

int minter;

int second;

};

void timejs(struct date all[],int i,int hour,int minter,int second){//这个地方,数组传入后不要加*,这个是原来的数组

int n;

if(all[i].second+second>60){

all[i].second+=(second-60);

all[i].minter++;

}else all[i].second+=second;

if(all[i].minter+minter>=60){

n=(all[i].minter+minter)/60;

all[i].minter=(all[i].minter+minter)%60;

all[i].hour+=n;

}else all[i].minter+=minter;

all[i].hour+=hour;

}

void timejsj(struct date *start,struct date *stand){

if(stand->second-start->second<0){

stand->second-=(start->second-60);

stand->minter--;

}else stand->second-=start->second;

if(stand->minter-start->minter<0){

stand->minter-=(start->minter-60);

stand->hour--;

}else stand->minter+=start->minter;

stand->hour-=start->hour;

}

int main(){

int n,i,j,num,wrong=0;

char nowqu;

scanf("%d",&n);

struct date start;

struct date stand;

struct date all[n];

for(i=0;i

nowqu=65;

all[i].hour=0;

all[i].minter=0;

all[i].second=0;

scanf("%d:%d:%d",&start.hour,&start.minter,&start.second);

scanf("%d",&num);

wrong=0;

for(j=0;j

getchar();//在读字符前需要读掉缓冲区内的东西

scanf("%c",&stand.qu);

scanf("%d:%d:%d",&stand.hour,&stand.minter,&stand.second);

scanf("%s",&stand.re);//注意:这个最好不要和上面的加在一起,肯可能会有未知bug

if(stand.qu==nowqu){

if(stand.re[0]==17217){

timejsj(&start,&stand);

timejs(all,i,stand.hour,stand.minter,stand.second);

timejs(all,i,0,20*wrong,0);

wrong=0;

}else{

wrong++;

}

}else{

nowqu=stand.qu;

if(stand.re[0]==17217){

timejsj(&start,&stand);

timejs(all,i,stand.hour,stand.minter,stand.second);

timejs(all,i,0,20*wrong,0);

wrong=0;

}else{

wrong++;

}

}

}

}

for(i=0;i

printf("%02d:%02d:%02d\n",all[i].hour,all[i].minter,all[i].second);

}

return 0;

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

C语言oj罚时计算,罚时计算器(字符处理,结构,指针数组).c相关推荐

  1. C语言项目实战:24点游戏计算器(基于结构体、指针、函数、数组、循环等知识点)

    文章目录 C语言项目实战:24点游戏计算器(基于结构体.指针.函数.数组.循环等知识点) 前言:24点游戏计算器的规则如下 一.项目的创建标 1.选择项目 2.输入项目名称和路径 3.创建头文件Mai ...

  2. C语言力扣第九题之回文数。两指针数组遍历法

    给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 例如,121 是回文,而 123 不是. 示 ...

  3. 二级指针、数组指针、二维数组、指针数组作为函数形参时可传入的实参

    1.传参规则: a.当二级指针作为函数形参时,能作为函数实参的是二级指针,指针数组,一级指针的地址 b.当数组指针作为函数形参时,能作为函数实参的是二维数组,数组指针 c.当二维数组作为函数形参时,能 ...

  4. C语言基础知识(三)-程序设计结构、数组、字符串处理函数

    本文是C语言的基础知识,主要讲解三种程序设计结构.数组.字符串和字符数组.数组元素查询以及字符串处理函数. 程序结构设计 包括C语言在内的几乎任何编程语言都支持以下三种程序设计结构,它们分别是: 顺序 ...

  5. C语言中关于向函数中传入结构指针的易错点及解决方案

    前言(Introduction): 最近在学习链表的过程中,我写了这样一段函数: Recently in the process of learning the linked-list, I wrot ...

  6. C语言结构体数组的使用

    1.结构体数组的优点 结构体可以存储不同的数据类型,将他们互相联系起来.结构体数组可以连续存储多个结构体,和数组作用相似.比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号.当需要存 ...

  7. C语言(较深入原理):%s通过字符串首元素地址输出,用指针数组来作示例

    首先,我们输出一个字符串都知道是用%s来输出,但是我们并没有多想是通过什么方式来输出的. 今天我在看指针数组的时候发现了一个问题,按就是定义一个字符类型的指针数组, /*字符串的输出本身就需要他的地址 ...

  8. ACM比赛排名与罚时计算问题

    样例: #include<algorithm> #include<stdio.h> #include<string.h> using namespace std; ...

  9. R语言计算相关系数时出现NA的解决办法

    如图使用cor()函数计算相关系数时出现了NA值.这是因为输入的数据中含有缺失值. df <- na.omit(df) # df 是传入cor()函数的数据框 只要使用na.omit()函数去除 ...

最新文章

  1. Ashby diagram
  2. 北斗导航 | 基于最小二乘残差法与奇偶矢量法的RAIM算法(附代码)
  3. 步进电机驱动C语言代码,单片机控制步进电机系统(C语言源代码)
  4. 精简版oracle客户端程序
  5. Openresty 安装luarocks
  6. windows7内部版本7601此副本不是正版 桌面背景黑屏
  7. matlab 摄氏度符号怎么打
  8. 【源码】基于PMSG的风力发电机组仿真与建模
  9. 揭秘三个霸道的引流方法 为你扫清没流量的烦恼
  10. 巧用天翼云盘备份云主机数据
  11. 基于投影学习的负采样改进型上位词关系提取 (翻译学习使用)
  12. 什么浏览器好用稳定速度快?
  13. 印象笔记,幕布, Effie 哪个适合 up 主?
  14. 计算机应用基础讨论题目,计算机应用基础简答的题目答案.doc
  15. 庄子,以自然之道,养自然之身
  16. 大疆推教育机器人已到第二代!机器人编程玩具的前世今生是怎样的?
  17. 人生,若一幅浓淡相宜的画卷
  18. 联想-V470 Ubuntu 屏幕亮度设置问题
  19. HOOPS Shell详解
  20. Linux装docker + rancher

热门文章

  1. 洗衣液洗衣粉可以上飞机吗
  2. 网络电缆被拔出——简单是否为网卡损坏
  3. 微信公众号开发笔记(四)搭建本地测试环境
  4. grep多关键词查询
  5. MySQL - - 多表查询
  6. python中包含矩阵运算的第三方库_可用来存储和处理大型矩阵的Python第三方库是:???????????????????????????????????????...
  7. CString与string转换
  8. linux画平面图软件,画平面图最简单软件.docx
  9. python计算本息总和_[Python]等额本息房贷计算器
  10. JS逆向-搜狗词库加密