#include <math.h>
int main() {
int i
double EP,EU,EL,ED,WMM,a,T,T1,T2
double P[366],E[366],PE[366],P1[366],P2[366],P3[366],P4[366],E0[366],Q[366],R[366]
double KC=0.95,W=110,WU=10,WL=40,WD=60,WM=140,WUM=20,WLM=60,WDM=60,B=0.2,C=0.16,sum=0,sum1=0
FILE *fp
fp = fopen("d:\\xiaowenjing.txt","w")
for(i=0i<365i++) {
fscanf(fp, "%lf %lf %lf %lf %lf %lf", &Q[i], &E0[i], &P1, &P2, &P3, &P4)//数据文件中的数据是否正确,确实使用空格隔开的吗?
P[i] = 0.33*P1[i] + P2[i]*0.14 + P3[i]*0.33+P4[i]*0.2
fclose(fp)
EP = E0[i]*KC
if (WU + P[i] >= EP) {
EU = EP
EL = 0
ED = 0
}
else if(((WU + P[i]) < EP) & (WL >= C*WLM)) {// &是二进制位“与”操作符,这里是逻辑“与”操作,显然应该改为 &&,以下还有五处同样的问题。
EU = WU + P[i]
EL = (EP - EU)*WL/WLM
ED = 0
}
else if((WU + P[i] < EP) & ((C*(EP-EU)) <= WL)&(WL < C*WLM)) {
EU = WU + P[i]
EL = C*(EP - EU)
ED = 0
}
else if((WU + P[i] < EP) & (WL < C*(EP - EU))) {
EU = WU + P[i]
EL = WL
ED = C*(EP - EU) - EL
}
E[i] = EU + EL + ED
WMM = WM*(1 + B)
a = WMM*(1 - pow((1 - W/WM),(1/(1 + B))))
PE[i] = P[i] - E[i]
if(PE[i] <= 0) {
R[i] = 0
}
else if(a + PE[i] <= WMM) {
R[i] = PE[i] + W - WM + WM*(1 - pow(((PE[i] + a)/WMM),(B + 1)))
}
else if(a + PE[i] >= WMM) {
R[i] = PE[i] + W - WM
}
T = WU + P[i] - R[i] - EU
T1 = WL - EL + T
T2 = WD - ED + T1
if((T >= WUM) & (T1 >= WLM) & (T2 >= WDM)) {
WU = WUM
WL = WLM
WD = WDM
}
else if((T >= WUM) & (T2 >= WLM)*(T2 <= WDM)) {
WU = WUM
WL = WLM
WD = WD - ED + T2
}
else if((T >= WUM) & (T2 <= WLM)) {
WU = WUM
WL = WL = EL + T1
WD = WD - ED
}
else if(T < WUM) {
WU = WU + P[i] - R[i] - EU
WL = WL - EL
WU = WD - ED
}
W = WU + WL + WD
for(i = 0 i < 365 i++) {
sum = sum + R[i]
sum1 = sum1 + Q[i]
}
}
printf("sum = %1f,sum1 = %1f",sum,sum1)
}
/*
用到的公式有这些:计算参数:WM = 140mm,WUM = 20mm,WLM = 60mm, WDM = 60mm,B=0.2,C=0.16,IM = 0.00
1初始值:W = 110mm,WU = 10mm,WL = 40mm,WD = 60mmWM = WMM/(1 + b)
*/
#include<stdio.h>int main()
{
float x, y, z
char c, d
scanf("%f%c%f%c%f", &x, &c, &y, &d, &z)
switch(c)
{
case '+':
if ((x + y) == z)
printf("perfect\n")
else
printf("error\n")
break
case '-':
if ((x - y) == z)
printf("perfect\n")
else
printf("error\n")
}
return 0
}
花了点时间做了做,自己做的不保证全对。 一.请问下列指令源操作数的寻址方式 1.MOV AX,[BX] 寄存器间接寻址 2.MOV CX,2100H立即数寻址 3.OR AX,[BX+SI+200H] 相对基址加变址寻址 4.ADD BX,WORD PTR[SI+100H] 寄存器相对寻址 二.执行下列指令后,问(AL)=? SF=? ZF=? CF=? MOV AL,7FH ADD AL,-3(AL)=7CH SF=0 ZF=0 CF=1 三.试分析下面的程序段完成什么操作 MOV CL,04 让cl=4 SHL DX,CL dx左移4位 MOV BL,AH bl=ah SHL AX,CL ax左移4位 SHR BL,CL bl右移4位 OR DL,BL dl,bl 逻辑或,结果保存在dl中 总的操作为:取原来dx的最低四位和ax的最高四位 组成一个新的8位数,存放在dl中 四.设异步传输时 每个定符对应1个超始位 7个信息位 1个奇/偶效验和1个停止位 如果波特率位9600 每位能传输的最大定符数位多少个? 9600/(1+7+1+1)=960个 五.写出指令,使: 1.AX的低4位清零 AND AX,0FFF0H 2.BX的低4位取反 XOR BX,000FH 六.试编一段程序段 对多精度(32位)求补 其数值在DX:AX中 没考虑 七.填空 1.18的8421BCD编码是( 0018H) 2.A=+0110101,[A]反=( 00110101) 3.B=-0110101,[B]补=(11001011 ) 4中央处理器由(EU )和(BIU )构成 5.8086/8088中断共有( 2)种类型中断,可分为(可屏蔽 )中断和( 不可屏蔽)中断 6.825FA称为(8251A是可编程串行接口芯片 8255A是可编程并行接口芯片 ,8259A 是中断控制器) 7.“VAR DB 5 DVP (8,2 DVP(5))”语句汇编应分配(15 )个字节单元 8.8088中,AD7-AD0是( 地址数据)线