C语言问题(为什么无限循环,而且最后输出的e,t,time都为0)
#include<stdio.h>#include<stdlib.h>intmain(){intf=0,i=1,j=0;floatg,d,time,dt,e;chara[...
#include <stdio.h>
#include <stdlib.h>
int main()
{
int f=0,i=1,j=0;
float g,d,time,dt,e;
char a[80];
printf("请输入到车率g(分钟):");
scanf("%d",&g);
printf("请输入每辆车加油时间d(分钟):");
scanf("%d",&d);
printf("请输入总模拟时间长度time(分钟):");
scanf("%d",&time);
printf("请输入采样时间dt(分钟)(<=g)(>=time/80):");
scanf("%d",&dt);
printf("\n");
float b=dt,c=dt;
for(int t=0;t<=time;t=t+dt)
{
e=rand()/(RAND_MAX);
if(e<(dt/g))
{
a[i]=1;
f++;
}
b=b-dt;
c=c-dt;
if(a[f]==0);
else
{
if(b<=0)
{
a[f]=0;
b=d;
}
else if(c<=0)
{
a[f]=0;
c=d;
}
a[f]=0;
}
for(int h=1;h<=i;h++)
{
if(a[h]==1)
j++;
}
printf("在第%d个采样时间的时候\n",i);
if(b<=0)
printf("第一个油泵未工作\n");
else
printf("第一个油泵正在工作\n");
if(c<=0)
printf("第二个油泵未工作\n");
else
printf("第二个油泵正在工作\n");
printf("车辆队列已排到第%d位\n",j);
printf("%d\n",e);
printf("%d\n",t);
printf("%d\n",time);
i++;
}
} 展开
#include <stdlib.h>
int main()
{
int f=0,i=1,j=0;
float g,d,time,dt,e;
char a[80];
printf("请输入到车率g(分钟):");
scanf("%d",&g);
printf("请输入每辆车加油时间d(分钟):");
scanf("%d",&d);
printf("请输入总模拟时间长度time(分钟):");
scanf("%d",&time);
printf("请输入采样时间dt(分钟)(<=g)(>=time/80):");
scanf("%d",&dt);
printf("\n");
float b=dt,c=dt;
for(int t=0;t<=time;t=t+dt)
{
e=rand()/(RAND_MAX);
if(e<(dt/g))
{
a[i]=1;
f++;
}
b=b-dt;
c=c-dt;
if(a[f]==0);
else
{
if(b<=0)
{
a[f]=0;
b=d;
}
else if(c<=0)
{
a[f]=0;
c=d;
}
a[f]=0;
}
for(int h=1;h<=i;h++)
{
if(a[h]==1)
j++;
}
printf("在第%d个采样时间的时候\n",i);
if(b<=0)
printf("第一个油泵未工作\n");
else
printf("第一个油泵正在工作\n");
if(c<=0)
printf("第二个油泵未工作\n");
else
printf("第二个油泵正在工作\n");
printf("车辆队列已排到第%d位\n",j);
printf("%d\n",e);
printf("%d\n",t);
printf("%d\n",time);
i++;
}
} 展开
1个回答
展开全部
先指出几个问题:
for(int t=0;t<=time;t=t+dt)——t是整型,dt是浮点型,当dt<1时t=t+dt是不会增值的,因为一个浮点数赋给一个整型数时只取整数部分。比如t=1,dt=0.3,执行t=t+dt的结果是t永远是1。
printf("%d\n",e);——e是float型,而控制符却是%d,这样输出永远是0。
printf("%d\n",time);——与2一样,time是float型。
更多追问追答
追问
十分感谢
然后我输入测试值的时候依次是5.4.30.3都为整数
后面两个控制符改成%f后,输出还是0未变,请问是什么情况
追答
你输入整数有啥用?你声明的dt、time、e都是float型,无论你输入的具体数据有没有小数部分,它们都是带小数的。像for(int t=0;t<=time;t=t+dt)这样的语句,数据类型很混乱,也看不出语句的目的,这里time和dt都是浮点型,为何不把t也声明为浮点型?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询