欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

7-7 12-24小时制 (15分)

程序员文章站 2022-03-14 09:48:29
...

基础编程题目集

之前几题太简单了,我就不单写一页了(省的会说我水)。
这道题目还是比较有意思的,虽然我是一遍过的,但是我第一次发现我的答案比我同学的答案要麻烦(是我想多了吗),先看题目吧。
7-7 12-24小时制 (15分)
看完这题目,是不是感觉脑袋没有一点点思路呢?
我第一眼反正是没有读懂,那我们现在就来分析一下:

1、当小时数为0(24)~11时,后缀为AM,小时数不变。
2、当小时数为13~23时,后缀为PM,且小时数要减去12。
3、当小时数为12时,后缀为PM,小时数不变。
4、小时数与分钟数至多出现一个0。
5、输出格式严格按照要求,跟上的只有一个空格。

这几个点大概也是测试点的地方,如果错误了,看看自己有没有做到上面的要求哦。
现在附上我的超级垃圾代码:

#include<stdio.h>
int hours(int hour);

int main()
{
	int hour, minute;
	int a;//定义变量
	scanf("%d:%d", &hour, &minute);//输入小时数、分钟数
	a = hours(hour);//调用函数
	if (a) 
		printf("%d PM", minute);
	else 
		printf("%d AM", minute);
	return 0;
}

int hours(int hour)
{
	int ret = 0;//0为上午,1为下午
	if (hour >= 0 && hour < 12)//判断并输出
		printf("%d:", hour);
	else if (hour == 12) {
		printf("%d:", hour);
		ret = 1;
	}
	else if (hour == 24)
		printf("0:");
	else {
		printf("%d:", hour - 12);
		ret = 1;
	}
	return ret;
}

我第一次发现我的代码这么多。
我可能习惯了,喜欢主函数东西少一点,有啥东西都写到自定义函数去了。
让我来看看我同学的代码:

#include <stdio.h>
int main()
{
	int x, y;
	scanf("%d:%d", &x, &y);
	if (x < 12)
	{	
		printf("%d:%d AM\n", x, y);
	}
	else if (x >12 && x<24)
	{
		x = x - 12;
		printf("%d:%d PM\n", x, y);
	}
	else if (x == 24)
		printf("0:%d AM\n", y);
	else if (x == 12)
		printf("%d:%d PM", x, y);
	return 0;
}

发现他是直接输出,暴力枚举法,效果比我的要好诶,新手可以看看他的代码,喜欢函数的朋友看看我的哈哈哈哈哈哈。
就这,第七题也轻松完成了。