首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

16位ms-dos子系统中止应用程序的异常!程序就差一点了帮帮忙啊

2012-03-08 
16位ms-dos子系统中止应用程序的错误!程序就差一点了帮帮忙啊!#includestdlib.h #includegraphics.h #

16位ms-dos子系统中止应用程序的错误!程序就差一点了帮帮忙啊!
#include   "stdlib.h "
#include   "graphics.h "
#include   "stdio.h "
#include   "dos.h "
#include   "time.h "
#include   "fcntl.h "   /*以上是运行程序所需要的包含的头文件   */

typedef   struct   lift   /*定义一个名称为lift的结构体,成员包括x,y,number,floor*/
{
int   x,   y;   /*用来定位两电梯的位置*/
int   number;   /*定义电梯的楼号*/
int   floor;   /*定义电梯的层数*/
}LIFT;   LIFT   lift1,lift2;   /*分别定义两电梯   ,属于结构体类型*/
void   initdraw();   /*构造一个新的空的着色函数*/
void   drawlift(LIFT   lifts,   int   color);
/*声明着色函数drawlift(),用于显示数与颜色*/
char   diff(struct   time   sec,   struct   time   fir,   float   tim);

void   main()   /*调用主函数,主要用于控制两个电梯的上升、下降、停止*/
{
int   gdriver=DETECT,   gmode;
char   flag=1,   lift1_flag=0,   lift2_flag=0;   /*确定电梯的真实存在,初始*/   /*化电梯的状态为lift1_flag=0,lift2_flag=0*/
struct   time   first,   second;   /*定义两个结构体类型的变量*/
initgraph(&gdriver,&gmode, "E:\wintc\wintc ");   /*构造一个新的空的图表函数*/
lift1.floor=   0;   /*初始化电梯1楼层   */
lift1.number=   0;   /*初始化电梯1的楼*/
lift1.x   =   200;   /*定位起始楼1在横轴上的位置*/
lift1.y   =   381;   /*定位起始楼2在纵轴上的位置*/  
lift2.floor   =   0;   /*初始化电梯2楼层*/
lift2.number   =   0;   /*   初始化电梯2的楼*/
lift2.x   =   390;   /*   定位起始楼2在横轴上的位置*/
lift2.y   =   381;   /*定位起始楼2在纵轴上的位置*/
initdraw();
gettime(&first);
while(flag)
{
gettime(&second);
if(kbhit())
{
int   key;
key=getch();   /*输入状态符*/
switch(key)   /*输入状态符,用switch分支控制电梯活动状态*/
{
case   't ':flag=0;continue;   /*按t时推出程序的运行状态*/
case   '1 ':lift1_flag=1;break;   /*按1时电梯1开始上升*/
case   '2 ':lift2_flag=1;break;   /*按2时电梯2开始上升*/
case   'a ':if(lift1_flag)   lift1_flag   =   2;   break;   /*控制电1下降*/
case   'e ':if(lift1_flag==0)   lift1_flag=2;break;   /*电1在到了最顶层后按e控制电梯再下降*/
case   's ':if(lift2_flag)   lift2_flag=   2;   break;   /*控制电2的下降*/
case   'd ':if(lift2_flag==0)   lift2_flag=2;break;   /*电1在到了最顶层后按d控制电2的下降case   'w ':if(lift1_flag==1||lift1_flag==2)   lift1_flag=3;break;/*在电1处在运动状态,按w控制电1从运动状态转为静止状态*/
case 'f ':if(lift2_flag==1||lift2_flag==2)   lift1_flag=3;break;
/*在电2处在运动状态时,按f控制电2从运动状态转为静止状态*/
}
}
if(diff(second,first,0.05))   /*定义diff函数,用于控制电梯1、2的速度*/
{
if(lift1_flag)
{
if(lift1_flag==1)   /*电梯1处在下降状态*/
{
drawlift(lift1,BLACK);   /*调用drawlift()函数*/
if(lift1.y!=31)   /*若纵轴上的高度不等于31时继续下降至到31时停止*/
lift1.y--;
else   lift1_flag=0;   drawlift(lift1,WHITE);
}
else   if(lift1_flag==2)
{
drawlift(lift1,BLACK);   /*调用drawlift()函数*/
if(lift1.y!=381)/*若纵轴上的高度不等于381时继续上升至到381时停止*/  
lift1.y++;
else   lift1_flag=0;   drawlift(lift1,WHITE);
}
}
if(lift2_flag)
{
if(lift2_flag==1)   /*电梯2处在上升状态*/
{
drawlift(lift2,BLACK);   /*调用drawlift()函数*/
if(lift2.y!=31)   lift2.y--;
else   lift2_flag=0;
drawlift(lift2,WHITE);   /*调用drawlift()函数*/
}
else   if(lift2_flag==2)
{
drawlift(lift2,BLACK);   /*调用drawlift()函数*/
if(lift2.y!=381)   lift2.y++;


else   lift2_flag=0;
drawlift(lift2,WHITE);   /*调用drawlift()函数*/
}
}
first=second;
}
}
closegraph();
}
void   drawlift(LIFT   lifts,int   color)   /*定义drawlift()函数,定义电梯运动过程中通过的路径的颜色*/
{  
setcolor(color);/*调用setcolor()定义电梯运动过程中通过的路径的颜色*/
rectangle(lifts.x,lifts.y,lifts.x+50,lifts.y+49);
/*横轴上每隔50定义一种颜色,纵轴上每隔49定义一种颜色*/
}
void   initdraw()
{int   i;
int   y=30;
setcolor(WHITE);   /*调用setcolor(),使电梯的边框为白色*/
rectangle(50,10,590,30);   /*调用rectangle()函数,构造楼的模型*/
line(70,30,70,430);   /*调用线形函数line()*/  
line(190,30,190,430);  
line(260,30,260,430);
line(380,30,380,430);
line(450,30,450,430);
line(570,30,570,430);
rectangle(50,431,590,470);/*再次调用rectangle()函数,用于完成楼模型的构造*/
for(i=0;i <8;i++)
{   line(70,y+i*50,190,y+i*50);
line(260,y+i*50,380,y+i*50);
line(450,y+i*50,570,y+i*50);
}
drawlift(lift1,WHITE);
drawlift(lift2,WHITE);
}
char   diff(struct   time   sec,struct   time   fir,float   tim)/*完成对电梯速度的控制*/
{
float   second,first,cha;
if(sec.ti_sec&fir.ti_sec)
second=sec.ti_sec+60+sec.ti_hund/100   ;
else   second=sec.ti_sec+sec.ti_hund/100;
first=fir.ti_sec+fir.ti_hund/100;
cha=second-first;
if(cha&tim)   return   1;
else   return   0;
}
error:Illegal   use   of   floating   point   in   function   diff
运行时总是16位ms-dos子系统中止应用程序的错误!
到底哪错了啊?请教高手啊!

[解决办法]
error:Illegal use of floating point in function diff

错误已经很明显了.
[解决办法]
if(sec.ti_sec&fir.ti_sec)
----------------------------
这一句

热点排行