作业帮 > 综合 > 作业

C语言高手进 2.1 已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/22 01:58:43
C语言高手进
2.1
已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停靠本站.由于路上可能出现堵车,我们假定汽车因此而随机耽搁0-30分钟.也就是说假定最坏情况汽车在发车70分钟后才到达本站.
假设某位旅客在每天的10:00到10:30之间一个随机的时刻来到本站,那么他平均的等车时间是多少分钟?
您可以通过编程多次模拟这个过程,计算输出平均等待的分钟数.精确到小数后1位.
#include
#include
#include
// 精确地分钟的时间类
// 采用24小时制
struct Time
{
\x05int hour;
\x05int min;
};
//长途车早6:00开始发车
const Time BusStartTime = {6,0};
//长途车晚6:00结束发车
const Time BusEndTime = {18,0};
// 发车间隔为1小时
const Time BusIntervalTime = {1,0};
// 长途车正常到站时间 40分钟
const Time BusNormalArriveTime = {0,40};
// 长途车晚点到站的最小最大时间范围
// 最少延迟 0 分钟
const Time BusDelayArriveMinTime = {0,0};
// 最大延迟 40 分钟
const Time BusDelayArriveMaxTime = {0,40};
// 旅客到站等车的时间区间
// 旅客到站等车的最早时间
const Time PassengerWaitEarliestTime = {10,0};
// 旅客到站等车的最晚时间
const Time PassengerWaitLastestTime = {10,30};
// 模拟旅客等车次数
const int SimulateTimes = 5;
/*
比较两个时间 t1 和 t2 的早晚
t1 比 t2 早,返回负数
t1 比 t2 晚,返回正数
t1 和 t2 同时,返回0
*/
int compareTime(struct Time t1,struct Time t2)
{
\x05return (t1.hour * 60 + t1.min) - (t2.hour * 60 + t2.min);
}
/*
\x05在 t1 的基础上加上 t2
\x05结果不会超出24小时制
*/
Time addTime(struct Time t1,struct Time t2)
{
\x05Time result ;
\x05result.min = (t1.min + t2.min)%60;
\x05result.hour = ((t1.hour + t2.hour) + (t1.min + t2.min)/60)%24;
\x05return result;
}
/*
\x05在 t1 的基础上加上 t2
\x05结果转换成分钟 (小时为0)
*/
Time addTime2(struct Time t1,struct Time t2)
{
\x05Time result ;
\x05 result.hour = 0;
\x05 result.min = (t1.hour*60 + t1.min) + (t2.hour*60 + t2.min);
\x05return result;
}
/*
\x05在 t1 的基础上减去 t2
\x05结果转换成分钟(小时为0)
*/
Time subTime2 (struct Time t1,struct Time t2)
{
\x05 Time result ;
\x05 result.hour = 0;
\x05 result.min = (t1.hour*60 + t1.min) - (t2.hour*60 + t2.min);
\x05 return result;
}
/*
\x05产生介于 tMin 和 tMsx 之间的一个随机时间
*/
Time randTime(struct Time tMin,struct Time tMax)
{
\x05Time result ;
\x05
\x05int tMinAsMinute = tMin.hour*60 + tMin.min;
\x05int tMaxAsMinute = tMax.hour*60 + tMax.min;
\x05int randTAsMinute = rand()%(tMaxAsMinute - tMinAsMinute ) + tMinAsMinute;
\x05result.hour = randTAsMinute/60;
\x05result.min\x05= randTAsMinute%60;
\x05return result;
}
/*
\x05时间 t 和 n 取平均
*/
int averageTime(struct Time t,int n)
{\x05
\x05return (t.hour*60 +t.min) / n;
}
/*
输出时间 t
*/
void printTime(struct Time t)
{
\x05printf(" [%2d :%2d] ",t.hour,t.min);
}
int main(int argc,char *argv[])
{
\x05Time busStartTime;
\x05
\x05Time busNormalArriveTime;
\x05Time randDelayTime;
\x05Time busRealArriveTime;
\x05
\x05Time passengerWaitStartTime;
\x05Time passengerMinWaitTime;
\x05Time passengerGetOnBus ;
\x05Time passengerTotalWaitTime = {0,0};
\x05
\x05int t ;
\x05// 模拟次数
\x05for(t = 0 ; t < SimulateTimes ; t ++)
\x05{\x05
\x05\x05srand(time(NULL)+t);
\x05\x05// 输出当前模拟第几天
\x05\x05printf("SimulateDay = %6d\n",t + 1);
\x05\x05// 乘客当天到站等车的开始时间
\x05\x05passengerWaitStartTime = randTime(PassengerWaitEarliestTime,PassengerWaitLastestTime);
\x05\x05// 输出乘客当天到站等车的开始时间
\x05\x05printf("passengerWaitStartTime = ");
\x05\x05printTime(passengerWaitStartTime);
\x05\x05printf("\n");
\x05\x05
\x05\x05// 乘客当天能等车花费的时间,初始化为一个最大值(24小时)
\x05\x05passengerMinWaitTime.hour = 24;
\x05\x05passengerMinWaitTime.min = 59;
\x05\x05
\x05\x05// 模拟一天的发车过程
\x05\x05for(\x05busStartTime = BusStartTime ;
\x05\x05\x05\x05compareTime(busStartTime,BusEndTime)= 0 &&
\x05\x05\x05\x05 \x05\x05compareTime(subTime2(busRealArriveTime,passengerWaitStartTime),passengerMinWaitTime)
C语言高手进 2.1 已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停 某公共汽车始发站,1路车每5分钟发车一次,2路车每10分钟发车一次,3路车每12分钟发车一次.这三路汽车同时发车后,至少 某公共汽车始发站,1路车每4分发车一次,2路车每5分发车一次,3路车每7分发车一次.这三路汽车同时发车后,至少再经过多少 某公共汽车始发站 一路车每5分钟发车一次,2路车,每8分钟发车一次 3路车每10分钟发车一次.这三路车同时发 某事公共汽车站,1路汽车每5分钟发车一次,6路汽车每6分钟发车一次,28路汽车每4分钟发 1路公交车每5分钟发一次车,2路公交车每8分钟发一次车,这两路车从上午6时第一次同时发车到22时最后一次同时发车,一天内 公交车站的1路车和2路车从早上6:00同时发车.以后1路车每隔8分钟发车一次,2路车m每隔10分钟发车一次.这样 公交车1路车每4分钟发一次车,2路车每5分钟发一次车,两车早上6点同时发车,从早上6点到早上7点两路车有多少次同时发车, 八路汽车6分钟发一次车,二路汽车5分钟发一次车,从起点站同时发车后,至少再过多少分钟二路车和八路车再次同时从起点发车? 一个公交车站,从早上6:00发车,晚上8:00收车,40分钟到达终点,司机到达终点后休息10分钟,问如果每5分钟发一次车 海门汽车站4路公交每6分钟发车一次,6路公交车每15分钟发车一次.早晨6:00,4路、6路同时发车,问至少经过 2路公共汽车每4分钟发车一次,3路公共汽车每6分钟发车一次,至少要过多长时间又同时发车