汽油与消费需求问题,以链接为参考,按照流程写的代码,但结果输出为负数,是哪部分有问题
#include
#include
double function(double q);
int main()
{
int Q=3000,T=3,d=1000,s=2,N=36500;
int K=N,I=0,C=0,flag=0;
while(flag==0){
I=I+Q,C=C+d;
if(T==K)
flag=1;
double q=rand()/(RAND_MAX+1.0);;
double qi;
qi=function(q);
I=I-qi;
if(I<=0)
{
I=0;
K=K-1;
}
else
{
C=C+I*s;
K=K-1;
}
}
printf("%lf",C*0.1/N);
}
double function(double q)
{
double qi;
if(q>=0&&q<0.01)
qi = (q+0.2)*5000;
else if(q>=0.01&&q<0.03)
qi = (q+0.2)*5000;
else if(q>=0.03&&q<0.08 )
qi = (q+0.545)*2000;
else if(q>=0.08&&q<0.20)
qi = (q+1.42)*833.33;
else if(q>=0.20&&q<0.40)
qi = (q+2.5)*500;
else if(q>=0.40&&q<0.67)
qi = (q+3.515)*370.37;
else if(q>=0.67&&q<0.85)
qi = (q+2.12)*555.55;
else if(q>=0.85&&q<0.93)
qi = (q+0.47)*1250;
else if(q>=0.93&&q<0.97)
qi = (q-0.23)*2500;
else
qi= (q-0.6)*5000;
return qi;
}
#include <stdio.h>
#include <stdlib.h>
double function(double q);
int main()
{
int Q=3000,T=3,d=1000,s=2,N=36500;
int K=N,I=0,C=0,flag=0;
while(flag==0)//当运送的时间间隔大于模拟中剩下的天数时,才进行运送货物
{
for(int i=1;i<=N;i+=T)//每T天进行一次货物运输
{
I=I+Q;
C=C+d;//计算进货后的存储量,计算此次进货的费用
for(int j=1;j<=T;j++)//在一个周期内进行存储量总费用的计算
{
double q=rand()/(RAND_MAX+1.0);
double qi;
qi=function(q);//需求量
I=I-qi;//库存量
if(I<=0)
I=0;
else//还有库存时需要进行存储费用的计算
C=C+I*s;
}
K=K-T;
if(T==K)//如果运送时间间隔等于模拟中剩下的天数,无需进货
{
flag==1;
break;
}
}
printf("%lf",C*1.0/N);
return 0;
}
}
double function(double q)
{
double qi;
if(q>=0&&q<0.01)
qi = (q+0.2)*5000;
else if(q>=0.01&&q<0.03)
qi = (q+0.2)*5000;
else if(q>=0.03&&q<0.08 )
qi = (q+0.545)*2000;
else if(q>=0.08&&q<0.20)
qi = (q+1.42)*833.33;
else if(q>=0.20&&q<0.40)
qi = (q+2.5)*500;
else if(q>=0.40&&q<0.67)
qi = (q+3.515)*370.37;
else if(q>=0.67&&q<0.85)
qi = (q+2.12)*555.55;
else if(q>=0.85&&q<0.93)
qi = (q+0.47)*1250;
else if(q>=0.93&&q<0.97)
qi = (q-0.23)*2500;
else
qi= (q-0.6)*5000;
return qi;
}
你现在这代码,C值很大,要改为long long 类型。另外最后输出应该是C*1.0/N吧?
还是负的,好像关键错误不在这
//引头文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>//用于反应意外情况的,下面会讲到
#include <windows.h>
//定义宏常量
#define MAX_ID 11//ID的最大长度
#define MAX_PWD 20//密码的最大长度
#define MAX_NAME 15//名字的最大长度
#define MAX_SEX 5//性别的最大长度
#define MAX_PHONE 12//电话的最大长度
//创建用户的结构体
typedef struct Users
{
char id[MAX_ID];//id 即登录的账号
char pwd[MAX_PWD];//密码
char name[MAX_NAME];//姓名
char sex[MAX_SEX];//性别
char phone[MAX_PHONE];//电话
}Users;
//声明函数
//打印菜单
void menu();
//用户注册
void Register();
//登录
void Login();
//找回密码
void Reback();
//定位光标
void gotoxy();
//获取x的位置
int posx();
//获取y的位置
int posy();
//密码输入(含掩盖功能)
void Getpwd(char* pwd);
这里定义了很多宏常量,可以看情况修改合适的数值,比较快捷方便,不用到代码里一个个改