C语言高手进 2.1 已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停靠本站.由于路上可能出现堵车,我们假定汽车因此而随机耽搁0-30分钟.也就是说假

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 18:08:44

C语言高手进 2.1 已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停靠本站.由于路上可能出现堵车,我们假定汽车因此而随机耽搁0-30分钟.也就是说假
C语言高手进
2.1
已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停靠本站.由于路上可能出现堵车,我们假定汽车因此而随机耽搁0-30分钟.也就是说假定最坏情况汽车在发车70分钟后才到达本站.
假设某位旅客在每天的10:00到10:30之间一个随机的时刻来到本站,那么他平均的等车时间是多少分钟?
您可以通过编程多次模拟这个过程,计算输出平均等待的分钟数.精确到小数后1位.

C语言高手进 2.1 已知某长途车从始发站早6:00到晚6:00每1小时整点发车一次.正常情况下,汽车在发车40分钟后停靠本站.由于路上可能出现堵车,我们假定汽车因此而随机耽搁0-30分钟.也就是说假
#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分钟后停靠本站.由于路上可能出现堵车,我们假定汽车因此而随机耽搁0-30分钟.也就是说假 C语言高手, 大连始发辽东半岛号列车时刻表辽东半岛号列车从大连始发的时间和票价是多少? 计算机编程高手进C语言已知五个小于35的正整数的乘积是403200,求出所有的组合.谁能给出运算步骤最少的算法! 从深圳哪个汽车站有到达福建省三明市泰宁县的长途车坐 求C语言高手 c=0x80是什么意思 C语言的一道题,求高手解释 C语言中%d=a是什么意思,请高手指教! 哪位C语言高手帮忙解释一下(*(long*)&wiegand[0]) C语言题目,求高手解答我需要正确答案 谢谢 请高手帮我做一道c语言改错题. 长途车用英语怎么说? C语言除法C语言中有两种除法,取整和取余.请高手编个程,要求从键盘输入两个数a,b,求出所得结果,结果要精确表示(就是带几位小数),最后输出a/b=结果, C语言编程 1、输入四个数,将四个数分别从小到大、从大到小排序后进行输出.VC++ 6.0 求高手赐教 c语言高手急救:从输入的10个数中,找出最大值和最小值,然后去掉一个最大数和一个最小数,求剩余数的平均 编写C语言程序从n(20 (茶)字是从哪个字简化来的,它始发于那个年代 在三角形中,已知斜边和角A求对边及邻边!求高手给C语言的程序!含cos与sin函数的