如何解决C闹钟
代码可以完美运行,直到它打印出xx.00.00,然后打印两次。所有其他代码都可以正常运行,但是每次从23.59.59-)00.00.00开始都会被打印两次。请帮助我
#include <stdio.h>
void check(int number) {
if (number < 10) {
printf("0%d",number);
}
else {
printf("%d",number);
}
}
void count(int present_time,int time_for_alarm) {
int present_hour = present_time/10000;
int present_min = (present_time/100) % 100;
int present_sec = (present_time % 100);
int alarm_hour = time_for_alarm/10000;
int alarm_min = (time_for_alarm/100) % 100;
int alarm_sec = (time_for_alarm % 100);
while (present_hour != alarm_hour) {
if (present_hour == alarm_hour && present_min == alarm_min && present_sec == alarm_sec) {
printf("ALARM");
}
else {
if (present_sec <= 60) {
present_sec++;
if (present_sec == 60) {
present_sec = 0;
present_min++;
}
if (present_min == 60) {
present_min = 0;
present_hour++;
}
if (present_hour == 24) {
present_hour = 0;
}
check(present_hour);
printf(":");
check(present_min);
printf(":");
check(present_sec);
printf("\n");
}
}
}
while (present_min != alarm_min) {
if (present_hour == alarm_hour && present_min == alarm_min && present_sec == alarm_sec) {
printf("ALARM");
}
else {
if (present_sec <= 60) {
present_sec++;
if (present_sec == 60) {
present_sec = 0;
present_min++;
}
check(present_hour);
printf(":");
check(present_min);
printf(":");
check(present_sec);
printf("\n");
}
}
}
while (present_sec != alarm_sec) {
check(present_hour);
printf(":");
check(present_min);
printf(":");
check(present_sec);
printf("\n");
present_sec++;
}
}
int main() {
int present_time,time_for_alarm;
printf("What time is it? (HHMMSS)");
scanf("%d",&present_time);
printf("What time should the alarm go off? (HHMMSS)");
scanf("%d",&time_for_alarm);
count(present_time,time_for_alarm);
printf("ALARM");
return 0;
}
解决方法
问题就在这里
Example[A2,Any]
在其他每个循环中,您先前进while (present_sec != alarm_sec) {
check(present_hour);
printf(":");
check(present_min);
printf(":");
check(present_sec);
printf("\n");
present_sec++;
}
,然后打印时间。在此循环中,您将前进。当您到达正确的小时和分钟时,您将进入此循环,并且您将始终在此处重复时间。尝试输入225555和225605。您将看到22:56:00重复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。