#include <stdio.h>
#include <stdlib.h>
struct time{int hours, mins, secs;};
int main(int argc, char *argv[])
{
printf("\nplease enter the time in 24 hr format, \nenter the hours, return,\nenter minutes, return, enter seconds, and return.\n");
struct time one;
scanf("%d\n%d\n%d", &one.hours, &one.mins, &one.secs);
printf("retfal1");
int yn;
yn = validateTime(one, yn);
while(!yn){
printf("\nerror, please enter the time in 24 hr format, \nenter the hours, return,\nenter minutes, return, enter seconds, and return.\n");
scanf("%d\n%d\n%d", &one.hours, &one.mins, &one.secs);
validateTime(one);
if (!yn){
puts("Invalid input\nPlease try again");
printf("\nplease enter the time in 24 hr format, \nenter the hours, return,\nenter minutes, return, enter seconds, and return.\n");
scanf("%d\n%d\n%d", &one.hours, &one.mins, &one.secs);
validateTime(one);
}
else{
printf ("Time entered was; %d:%d:%d", one.hours, one.mins, one.secs);
}
}
printf ("the time entered ws; %d:%d:%d", one.hours, one.mins, one.secs);
getch();
return 0;
}
int validateTime(struct time tme, int yn)
{
if (tme.hours < 0 || tme.hours > 23 || tme.mins > 59 || tme.mins < 0 || tme.secs < 0 || tme.secs > 59)
{
printf("retfal4");
yn = 0;
return yn;
}
else {
printf("rettru");
yn = 1;
return yn;
}
}
这个程序应该采取,验证和打印时,分和秒(在考虑他们在不同的行)如果它得到在第一无效输入尝试将提示再次摄入并检查时间。验证会导致问题,它将在第一个条目上正确验证,但是如果您输入的时间不正确,将会输出无效的输出并提示下一个输入,但即使正确/有效的输入也会导致另一个无效的输入提示。 ..我一直在寻找这个太久,我可以告诉我在某个阶段做了一些愚蠢的事情,但找不到它。任何帮助将非常感激。验证函数的第二周期不会验证正确