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语言进制转换