当前位置:编程学习 > C/C++ >>

c语言编程求解

已知汽车的速度80KM/h摩托车50KM/h和总路程50KM(路起点和终点连着的)在出发5KM处有个十字路口其中有1分钟的绿灯两分钟的红灯汽车和摩托车出发时候刚刚绿灯亮,求汽车在开出去多少时间和路程在次追上了摩托车

 

追问:你这个程序有点看不懂。。。前面的还可以后面就晕掉了

还有就是绿灯上的时间问题0~59是通行的60~179是停止,那在150秒的时候到达了十字路口,也就是说他们在十字路口只停留29秒时间而不是120秒,这是我编程时候遇到的问题。我看不怎么懂你这个程序,不知道你有没有把这个问题解决,还有就是在他们开出多少圈的时候汽车才再次追上了摩托车,那第一圈的时候就是在5KM时候有红绿灯第2圈的时候就是50了这里我就搞不明白了。要是在中途在多上几个红绿灯那就更不得了了。。。

答案:
..........................
开了1时24分35秒
116.57千米
..........................
Press any key to continue

#include<stdio.h>
void main()

int flag=0,counter=0;//0是绿灯
float qi,mo,qiz=0.0,moz=0.0;//每秒的路程和总路程
long time=0;
qi=80000/3600;
mo=50000/3600;
for(;qiz-moz<50000.0;time++)
{
if(counter==60&&flag==0)          //
{
flag=1;
counter=0;
}
else if(counter==120)    //控制红绿灯
{
flag=0;
counter=0;
}
else
counter++;                    //
if(flag==1)
{
if((long)(qiz)%50000>5000)//汽车
{
if(qi*120>(50000-(long)(qiz)%50000+5000))
qiz+=50000-(long)(qiz)%50000+5000;
else
qiz+=qi;
}
else
{
if(qi*120>(5000-(long)(qiz)%50000))
qiz+=5000-(long)(qiz)%50000;
else
qiz+=qi;
}

if((long)(moz)%50000>5000)//摩托
{
if(mo*120>(50000-(long)(moz)%50000+5000))
moz+=50000-(long)(moz)%50000+5000;
else
moz+=mo;
}
else
{
if(mo*120>(5000-(long)(moz)%50000))
moz+=5000-(long)(moz)%50000;
else
moz+=mo;
}
}
else
{
moz+=mo;
qiz+=qi;
}
}
printf("..........................\n");
printf("开了%ld时%ld分%ld秒\n%0.2f千米\n",time/3600,time/60-time/3600*60,time%60,qiz/1000);
printf("..........................\n");
}
楼上那木哦多码字没看到啊

上一个:C语言是什么?
下一个:C语言进制转换

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,