大笨钟类型的题目(Java,C)

一、基础版大笨钟

题目规则
整点:几点敲几下
半点:敲 1 下
其他时间:不敲
0 点 / 24 点 算 12 点

Java 代码

java

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int m = sc.nextInt();

int cnt = 0;

if (m == 0) { // 整点
cnt = h % 12;
if (cnt == 0) cnt = 12;
} else if (m == 30) { // 半点
cnt = 1;
}

System.out.println(cnt);
}
}

C 语言代码

c

include <stdio.h>

int main() {
int h, m, cnt = 0;
scanf("%d %d", &h, &m);

if (m == 0) {
cnt = h % 12;
if (cnt == 0) cnt = 12;
} else if (m == 30) {
cnt = 1;
}

printf("%d", cnt);
return 0;
}

二、微博版大笨钟(你刚才要的那道)

规则
12:00 及之前 不敲
12:00 以后才敲
整点敲当前点数
非整点敲下一个点数
只敲 1~12 下

Java 代码

java

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String time = sc.next();
String[] t = time.split("😊;
int h = Integer.parseInt(t[0]);
int m = Integer.parseInt(t[1]);

if (h <= 12) { // 上午不敲
return;
}

int cnt;
if (m == 0) {
cnt = h;
} else {
cnt = h + 1;
}

cnt %= 12;
if (cnt == 0) cnt = 12;

for (int i = 0; i < cnt; i++) {
System.out.print("当");
}
}
}

C 语言代码

c

include <stdio.h>

int main() {
int h, m;
scanf("%d:%d", &h, &m);

if (h <= 12) {
return 0;
}

int cnt;
if (m == 0) {
cnt = h;
} else {
cnt = h + 1;
}

cnt %= 12;
if (cnt == 0) cnt = 12;

for (int i = 0; i < cnt; i++) {
printf("当");
}
return 0;
}

三、进阶版:统计一段时间内一共敲多少下

规则
输入开始时间和结束时间,输出这段时间总共敲了多少下。

Java 代码

java

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h1 = sc.nextInt();
int m1 = sc.nextInt();
int h2 = sc.nextInt();
int m2 = sc.nextInt();

int start = h1 * 60 + m1;
int end = h2 * 60 + m2;
int total = 0;

for (int t = start; t <= end; t++) {
int h = t / 60;
int m = t % 60;

if (m == 0) {
int cnt = h % 12;
if (cnt == 0) cnt = 12;
total += cnt;
} else if (m == 30) {
total += 1;
}
}
System.out.println(total);
}
}

C 语言代码

c

include <stdio.h>

int main() {
int h1, m1, h2, m2;
scanf("%d %d %d %d", &h1, &m1, &h2, &m2);

int start = h1 * 60 + m1;
int end = h2 * 60 + m2;
int total = 0;

for (int t = start; t <= end; t++) {
int h = t / 60;
int m = t % 60;

if (m == 0) {
int cnt = h % 12;
if (cnt == 0) cnt = 12;
total += cnt;
} else if (m == 30) {
total += 1;
}
}
printf("%d", total);
return 0;
}

🔥 大笨钟题型万能技巧(背会就不会错)

1.24 小时转 12 小时:h % 12,结果为 0 就改成 12
2.整点判断:m == 0
3.半点判断:m == 30
4.时间转分钟:小时*60 + 分钟,方便遍历区间
5.上午不敲:h <= 12

posted on 2026-06-01 18:19  谢天佑  阅读(0)  评论(0)    收藏  举报