7-7 12-24小时制 (15分)
程序员文章站
2022-03-14 09:48:29
...
基础编程题目集
之前几题太简单了,我就不单写一页了(省的会说我水)。
这道题目还是比较有意思的,虽然我是一遍过的,但是我第一次发现我的答案比我同学的答案要麻烦(是我想多了吗),先看题目吧。
看完这题目,是不是感觉脑袋没有一点点思路呢?
我第一眼反正是没有读懂,那我们现在就来分析一下:
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;
}
发现他是直接输出,暴力枚举法,效果比我的要好诶,新手可以看看他的代码,喜欢函数的朋友看看我的哈哈哈哈哈哈。
就这,第七题也轻松完成了。