现在的位置: 首页 > 综合 > 正文

据说是华为面试题

2018年09月17日 ⁄ 综合 ⁄ 共 1741字 ⁄ 字号 评论关闭

/*

用C语言编写函数,从g_time_tab 中找出最接近g_sleep_time的时间,并且printf 出结果。

#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",
...
...
};

char g_sleep_time[6] = {
"21:30"
};

*/

//思路:将时间转换为以分钟为单位的整数。然后遍历一遍数组,取出与目标时间差值最小的一个打印出来。

#include <stdio.h>

#define TIME_TAB_MAX 245
char g_time_tab[TIME_TAB_MAX ][6] = {
    "13:46",
    "21:29",
    "08:23",
    "23:12",
    "05:59",
    "21:13",
    "12:00",
    "02:42",
    "22:29",
};

char g_sleep_time[6] = {
    "21:30"
};

//时间转整数

int xf_atoi(char* p)
{
    int iTime = 0;
    iTime = ((p[0]-'0')*10+(p[1]-'0'))*60  +  (p[3]-'0')*10+(p[4]-'0');
    return iTime;
}

//遍历一遍数组,取出差值最小的一个。
int xf_GetNearestIndex()
{
    int i = 0;
    int NearestIndex = 0;
    int tempNearest = 0;
    int tempNext = 0;
    int temp3 = xf_atoi(g_sleep_time);
    for(;i<TIME_TAB_MAX && g_time_tab[i][2]==':';++i)
    {
        tempNearest = xf_atoi(g_time_tab[NearestIndex]);
        tempNext = xf_atoi(g_time_tab[i]);
        if(tempNearest<=temp3 && tempNext <= temp3 )
        {
            if(temp3-tempNearest>=temp3-tempNext)
            {
                NearestIndex = i;
            }
        }
        else if( tempNearest>=temp3 && tempNext >= temp3 )
        {
            if(tempNearest-temp3>=tempNext-temp3)
            {
                NearestIndex = i;
            }
        }
        else if( tempNearest>=temp3 && tempNext <= temp3 )
        {
            if(tempNearest-temp3>=temp3-tempNext)
            {
                NearestIndex = i;
            }
        }
        else if(tempNearest<=temp3 && tempNext >= temp3)
        {
            if(temp3-tempNearest>=tempNext-temp3)
            {
                NearestIndex = i;
            }
        }
    }
   
    return NearestIndex;
}

int main(int argc,char** argv)
{
    int nearestIndex = xf_GetNearestIndex();
    printf("目标时间是:%s\n,与之最接近的时间是:%s\n",g_sleep_time,g_time_tab[nearestIndex]);
    return 0;
}

【上篇】
【下篇】

抱歉!评论已关闭.