C程序运行后显示Floating Point error:Domain是什么意思?

#include"stdio.h"
#include"conio.h"
#define N 4
struct jcb
{ char name[4];
int length;
int printer;
int tape;
int runtime;
int waittime;
};
struct jcb jcb[N],p;
long memory=6000,tape=8,printer=4;
hrrf()
{int x,y;float a[N],t;
printf("\n****The former****\n");
for(x=0;x<N;x++)
{a[x]=(float)jcb[x].waittime/jcb[x].runtime;
printf("\r%f\n",a[x]);
}

for(y=1;y<=N-1;y++)
for(x=0;x<=N-1-y;x++)
if(a[x]>a[x+1])
{t=a[x];a[x]=a[x+1];a[x+1]=t;}
printf("\n****The latter****\n");
for(x=0;x<N;x++)
printf("\r%f\n",a[x]);

for(y=1;y<=N-1;y++)
for(x=0;x<=N-1-y;x++)
if((float)jcb[x].waittime/jcb[x].runtime>(float)jcb[x+1].waittime/jcb[x+1].runtime)
{p=jcb[x];jcb[x]=jcb[x+1];jcb[x+1]=p;}
for(y=0;y<N;y++)
if((jcb[y].length<=memory)&&(jcb[y].printer<=printer)&&(
jcb[y].tape<=tape))
{printf("\rThe name is:%s\n",jcb[y].name);
memory=memory-jcb[y].length;
printer=printer-jcb[y].printer;
tape=tape-jcb[y].tape; }
}
print(struct jcb jcb[N])
{int x;
printf(" name length printer tape runtime waittime\n");
for(x=0;x<N;x++)
{printf("\r%10s %6d %6d %6d %6d %8d\n\r",jcb[x].name,jcb[x].length,
jcb[x].printer,jcb[x].tape,jcb[x].runtime,jcb[x].waittime);
}}
main()
{struct jcb jcb[4]={{"A",5625,2,5,80,25},{"B",265,3,4,100,50},{"C",512,4,4,500,120},{"D",3973,4,2,875,30}};
int x,m;
clrscr();
hrrf();
printf("Press any key to finish");
getch();
}

主要问题是在main()外面已经定义了一个jcb结构体数组,在main()里又定义了一个jcb结构体数组,并且赋值。程序只识别外部jcb[],但这个结构体是空的,所以会产生错误。
稍微改动一下就可以了。
#include"stdio.h"
#include"conio.h"
#define N 4
struct jcb
{ char name[4];
int length;
int printer;
int tape;
int runtime;
int waittime;
};
struct jcb jcb[N]={{"A",5625,2,5,80,25},{"B",265,3,4,100,50},{"C",512,4,4,500,120},{"D",3973,4,2,875,30}},p;
long memory=6000,tape=8,printer=4;
void hrrf()
{ int x,y;
float a[N],t;
printf("\n****The former****\n");
for(x=0;x<N;x++)
{ a[x]=(float)jcb[x].waittime/jcb[x].runtime;
printf("\r%f\n",a[x]);
}
for(y=1;y<=N-1;y++)
for(x=0;x<=N-1-y;x++)
if(a[x]>a[x+1])
{ t=a[x];a[x]=a[x+1];
a[x+1]=t;
}
printf("\n****The latter****\n");
for(x=0;x<N;x++)
printf("\r%f\n",a[x]);
for(y=1;y<=N-1;y++)
for(x=0;x<=N-1-y;x++)
if((float)jcb[x].waittime/jcb[x].runtime>(float)jcb[x+1].waittime/jcb[x+1].runtime)
{ p=jcb[x];jcb[x]=jcb[x+1];
jcb[x+1]=p;
}
for(y=0;y<N;y++)
if((jcb[y].length<=memory)&&(jcb[y].printer<=printer)&&(jcb[y].tape<=tape))
{ printf("\rThe name is:%s\n",jcb[y].name);
memory=memory-jcb[y].length;
printer=printer-jcb[y].printer;
tape=tape-jcb[y].tape;
}
}
void print(struct jcb jcb[N])
{ int x;
printf(" name length printer tape runtime waittime\n");
for(x=0;x<N;x++)
{ printf("\r%10s %6d %6d %6d %6d %8d\n\r",jcb[x].name,jcb[x].length,
jcb[x].printer,jcb[x].tape,jcb[x].runtime,jcb[x].waittime);
}
}
void main()
{ //struct jcb jcb[4]={{"A",5625,2,5,80,25},{"B",265,3,4,100,50},{"C",512,4,4,500,120},{"D",3973,4,2,875,30}};
//int x,m;
//clrscr();
hrrf();
printf("Press any key to finish");
getch();
}
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言中:floating point error:Domain是什么意思
Floating Point error:Domain意思是: 浮点指针错误:域。 ,主要是jcb[]重复定义,外部变量优先于内部变量,外部变量没有赋值,所以会出错。希望采纳

运行了一段c程序,屏幕显示floating point error:domain是什么意思
floating point error:domain是什么意思 是浮点错误,domain是领域的意思,这个就是你的变量溢出了。。所谓溢出就是你的数超出机器表示的范围了...数据的每一种类型都有自己的存储空间,那空间一定,表示的数就有一定的范围,如果你的数超出范围会出错.但是一般机器不报错.而是给你一个随机的一个值....

运行了一段c程序,屏幕显示floating point error:domain是什么意思
你的floating point error domain 错误可能就出现在 low 和 high 函数的l=score[i][0]这类的语句上。

C语言中运行结果出现“floating point error :Domain”是什么意思?(1...
你的子程序没有给全,无法给你试运行。一般这种错,要插入一些打印语句根踪变量变化,找到出错地点和语句,再改正。例如找出错地点:printf("pass 1\\n");...printf("pass 2\\n");...printf("pass 3\\n");...

C程序运行后显示Floating Point error:Domain是什么意思?
浮点错误

c语言中的floating point error:domain
long float --- double 另外,注意数值范围.

floating point error :domain
是算法的问题,无编译器无关(即不是语法错误)请检查for循环部分,由于循环中的sub=fabs(tcl2-tcl1); 改变了循环控制变量sub的值,所以使得循环的运行过程变得难以想象。

c语言 floating point error:domain
divide by 0 溢出了,有个除数为零了 看看在哪里出错的,除数为0,不能进行运算

一个程序运行出现 floating point error :Domain
总结= 0 ;米= (二-一) \/氮;而(一<二)(总结=总结+ F (上一) *米;1 = 1 +米; )printf ( “ %女\\ n ” ,总结) ; )指你运行的程序中有一个程序无效化或运算错误 如果你运行的是游戏,看看是不是游戏光盘有问题。如果是电脑系统程序,把电脑重装一次系统就好了。

为什么运行后显示为floating point error:domain
最主要问题是dp[M],ds[M]在主函数和各个其他函数分别声明,并不是同一个变量,应该将这些声明全部删去,而在函数外声明它们为全局变量,即只在主函数外写一次声明。还有一个其他问题:ul为float,但函数sln等的第三个参数均为int,应该也全部改为float ...

相似回答
大家正在搜