下面是我自己編的一個C程序,用turboC2.0運行總是報出“Floating point ”錯誤。我實在不知道哪里錯了啊。請各位高手幫忙解決一下。在下感激不盡!!!#include"stdio.h"struct task{int ID; int num; int Runtime; int Waittime; float p;};struct task array[100];main(){int d,i,q,g,m,w; float k,n,s,t,u; printf("請輸入作業數(不大于100)\n"); scanf("%d",&q); while(q>100) {printf("數據輸入錯誤!請重新輸入\n"); scanf("%d",&q); } g=q; printf("請輸入各作業編號,已等待時間及運行時間:\n"); for(i=0;i<q;i++) {scanf("%d%f%f",&m,&k,&n); array[i].num=1; array[i].ID=m; array[i].Waittime=k; array[i].Runtime=n; } printf("作業執行的順序是:\n"); while(g>0) {for(i=0;i<q;i++) {if(array[i].num==1) array[i].p=(u+array[i].Waittime+array[i].Runtime)/array[i].Runtime; } for(i=0;i<q;i++) {if(array[i].num==1) if(array[i].p>s) {s=array[i].p; w=array[i].ID; t=array[i].Runtime; d=i; } } s=0; printf("%d\n",w); u+=t; g--; array[d].num=0; } printf("作業全部執行完畢!\n");}
熱心網友
我在Linuxgcc4.0下面運行似乎沒有報任何錯誤!以下是執行結果:請輸入作業數(不大于100)3請輸入各作業編號,已等待時間及運行時間:12.02.6 .3作業執行的順序是:123作業全部執行完畢!你有沒有發覺你的float變量u和s在第一次使用時都沒有初始化?當然還有:結構體中Waittime是int,而后面賦值的k是float,結構體中Runtime是int,而后面賦值的n是float,會不會是這個問題呢?因為你的程序報錯的原因在于浮點錯誤啊!如果沒有初始化,將會得到不確定的結果編譯器就會報錯的你試試看吧
熱心網友
#include"stdio。h"struct task{int ID;int num;int Runtime;int Waittime;float p;};struct task array[100];main(){int d,i,q,g,m,w;float k,n,s,t,u;printf("請輸入作業數(不大于100)\n");scanf("%d",&q);while(q100){printf("數據輸入錯誤!請重新輸入\n");scanf("%d",&q);}g=q;printf("請輸入各作業編號,已等待時間及運行時間:\n");for(i=0;i Waittime 是 int, k 是 float ?array[i]。Runtime=n; --- Runtime 是 int, n 是 float ?}printf("作業執行的順序是:\n");while(g0){for(i=0;i 這句有用嗎?肯定都通過的啦?array[i]。p=(u+array[i]。Waittime+array[i]。Runtime)/array[i]。Runtime;} --- u 這時未有賦值for(i=0;i 這句有用嗎?肯定都通過的啦?if(array[i]。ps){s=array[i]。p;w=array[i]。ID;t=array[i]。Runtime;d=i;}}s=0;printf("%d\n",w);u+=t;g--;array[d]。num=0;} --- 找不到對應的 {printf("作業全部執行完畢!\n");} 請將上述問題改正后再試試。