69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <time.h>
#define TIME_TAB_MAX 245
char g_time_tab[TIME_TAB_MAX ][6] = {
"13:46",
"08:23",
"23:12",
"05:59",
"09:13",
"12:00",
"02:42",
"22:29",
"21:29"
};
char g_sleep_time[6] = {
"21:30"
};
char g_temp_smallone[6]={"24:00"};
char g_temp_bigone[6]={"00:00"};
void GetSmallestAtMax(int);
void GetBigestAtMin(int);
int ChangeTime(char*);
void main()
{
int i,j;
/* clock_t start, finish;
double duration;
start = clock();*/
for (i=0;i<TIME_TAB_MAX;i++)
{
for(j=0;(j<6)&&( g_time_tab[i][j]==g_sleep_time[j] );j++);
if(g_time_tab[i][j]>g_sleep_time[j])
GetSmallestAtMax(i);
else GetBigestAtMin(i);
}
if ( (ChangeTime(g_temp_smallone)+ChangeTime(g_temp_bigone))/2>=ChangeTime(g_sleep_time) )
printf("%s\n",g_temp_bigone);
if ( (ChangeTime(g_temp_smallone)+ChangeTime(g_temp_bigone))/2<=ChangeTime(g_sleep_time) )
printf("%s\n",g_temp_smallone);
/* finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%3.3ld seconds\n", finish );
system("pause");*/
}
int ChangeTime(char*a)
{
return (a[0]*10+a[1])*60+(a[3]*10+a[4]);
}
void GetSmallestAtMax(int i)
{
int j;
for (j=0;j<6;j++)
{
if (g_time_tab[i][j]<g_temp_smallone[j])
{
strcpy(g_temp_smallone,g_time_tab[i]);
break;
}
else if (g_time_tab[i][j]>g_temp_smallone[j])
break;
}
}
void GetBigestAtMin(int i)
{
int j;
for (j=0;j<6;j++)
{
if (g_time_tab[i][j]>g_temp_bigone[j])
{
strcpy(g_temp_bigone,g_time_tab[i]);
break;
}
else if (g_time_tab[i][j]<g_temp_bigone[j])
break;
}
}
#include <stdio.h>
#include <math.h>
#include <string.h>
#define MAX_TAB_TIME 255
#define MAX_TIME 1440
char g_tab_time[MAX_TAB_TIME][6] ={
"12:28",
"18:21",
"08:45",
"21:24",
"01:36",
"13:18",
"00:02",
"10:34",
"17:32",
"04:13",
"23:53"
};
int time_atoi(char *time_a)
{
int time_i;
int tmp_h;
int tmp_m;
tmp_h = atoi(time_a);
time_a = time_a+3;
tmp_m = atoi(time_a);
time_i = tmp_h*60 + tmp_m;
printf("%s = %d \n", time_a-3, time_i);
return time_i;
}
int time_diff_get(int a, int b)
{
int diff;
diff = abs(a-b);
if(diff > 720){
diff = 1440 - diff;
}
return diff;
}
int main()
{
int i, tmp, tab_time;
int diff_time, diff_time_tmp;
int g_tab_time_int[MAX_TAB_TIME] = {0};
int tmp_time;
char g_check_time[6] = {"23:55"};
for(i=0; i<MAX_TAB_TIME; i++)
{
if(strlen(g_tab_time[i]) == 0){
tab_time = i;
break;
}
g_tab_time_int[i] = time_atoi(g_tab_time[i]);
}
printf("\n");
tmp_time = time_atoi(g_check_time);
printf("\n");
diff_time_tmp = time_diff_get(g_tab_time_int[0], tmp_time);
tmp = 0;
for(i=1; i<tab_time; i++){
diff_time = time_diff_get(g_tab_time_int[i], tmp_time);
if( diff_time < diff_time_tmp){
tmp=i;
diff_time_tmp = diff_time;
}
}
printf("From the time %s is %s.\n", g_check_time, g_tab_time[tmp]);
return 0;
}