gpt4 book ai didi

c - C 中的时间验证

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:10 24 4
gpt4 key购买 nike

我正在做一个简单的时间验证,它会接受开始时间和结束时间。

这两个时间都是 24 小时系统格式。

时间只能是小时,例如:“0800、0900、1000、1100、1200、1300、1400 ...”

这意味着不能像:“0830,0920,1025,1112,...

谁能建议我使用哪种最有效的技术来完成验证用户输入开始时间和结束时间的任务。

我的代码

int validate_time();

int main();

char start_time[5] ="0800", "0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000";
char end_time[5] ="0900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800", "1900", "2000", "2100:;

int start_time;
int end_time;

main() {
int start_time()
int end_time()
}

int validate_time() {
switch ( validate_time ) {

//if the input match with the function call
case 1:
int start_time();
return 1;
break;

case 2:
int end_time();
return 1;
break;

default:
printf("Time crash, please try again: \n");
return 0;
main();
}
}

最佳答案

由于输入的是4个字符的字符串,可以分别检查每个数字:

最重要检查:开始时检查每个字符是否为数字
然后检查这些条件,

1) 数字 1 应该是 <= 2
2) 当数字1为2时, 数字 2 应该是 <= 3
3)数字3应该是<= 5 (当然,这种情况下可能不需要这个检查)

更新:
方法二:

1) 您可以用整数格式代替字符串输入时间。
2) 现在因为时间值只有 24 种可能的组合,将它们保存在数组中,即制作一个查找表
3) 现在,由于您已将时间值按升序保存在数组中,您可以对用户输入的时间进行二分查找

更新 2:
方法 2 的示例:

你有一个包含所有可能时间值的整数数组:

int possible_times = {0, 100, 200, 300, ..., 2300}; 
// Note that you cannot place '0' before every number, otherwise compiler will
// treat them as octal values

现在你得到用户输入:

scanf("%u", &time_in);

验证输入时间time_in , 您可以搜索 possible_times大批。一种方法是 Linear Search Algorithm ,将数组中的每个元素与 time_in 进行比较.另一种方法是使用 Binary Search ,因为您的数组已排序。

使用二进制搜索,您最多需要执行 5比较,而使用线性搜索,您可能需要做 24比较,这就是我建议二分查找的原因。

附言:如果您不知道二进制搜索,请阅读它。

关于c - C 中的时间验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com