请赐教:一个航班程序。请可爱的您进来指点指点。
起飞时间 抵达时间
8:00a.m 10:16 a.m.
11:19p.m 1:31p.m
12:47p.m 3:00p.m
类似于这样的一个航班表,要求输入一个时间,程序选择起飞时间与用户输入最近的航班,显示相应的起飞时间和抵达时间。
我只知道把输入和起飞时间都用从午夜开始的分钟数表示然后比较。但是其他的就没有主意了。请各位指点。
[解决办法]
直接用输入和起飞时间相减, 差值最小的就是最近的
[解决办法]
大概思路如下:
#include <stdio.h>#define N 6int hour[] = { 8, 10, 11, 1, 12, 3};int minute[] = { 0, 16, 19, 31, 47, 0};int time[N];void creatTimeTable(int *p){ int i; for (i = 0; i < N; i++) *p++ = hour[i] * 60 + minute[i];}int nearestFlight(int *timeTable, int hour, int minute){ int *p = timeTable; int i; int time = hour * 60 + minute; int flag; int nearest; nearest = *p; flag = 0; for (i = 1; i < N; i++) { if (time - *p++ < nearest) { nearest = time; flag = 1; } } return flag;}intmain(void){ creatTimeTable(time); printf("%d\n", nearestFlight(time, 10, 20)); return 0;}