C語言入門6-12綜合練習 出現這個錯誤term does not evaluate to a function
#include<stdio.h> int?main() { ????? int?num; double?average; int?score[10]={67,98,75,63,82,79,81,91,66,84}; num=score[0]+score[1]+score[2]+score[3]+score[4]+score[5]+score[6]+score[7]+score[8]+score[9]; average=num/10; printf("總分:num=%d\n",num); printf("平均分:average=%d\n",average); ???? ???????int?i,j; ???for(i=8;i>=0;i--) ???{ ????for(j=0;j<=i;j++) { ???????????if(score[j]<score[j+1]) ???{ ???int?a; ???a=score[j]; score[j]=score[j+1]; score[j+1]=a; ???} } ???} ??? for(i=0;i<=9;i++) { printf("%d?\n",score(i)); } ????printf("最高分:%d\n",score(0)); printf("最低分:%d\n",score(9)); ???return?0; }
這是我寫的代碼 ?可是放在VC6.0編譯時 :
?printf("最高分:%d\n",score(0));
?printf("最高分:%d\n",score(0));
printf("最低分:%d\n",score(9));
這三句代碼同時出現相同的錯誤:term does not evaluate to a function
我不知道怎么改 麻煩大神求解一下
2016-12-04
問題1:average定義的是double 類型,輸出卻是整型,沒對上,把%d改成%f(控制下小數點位數可改為%.2f)。(還有這里average其實定義成float類型就好了,沒必要到double)。
問題2:就是問題問的,排序和最低最高分輸出提示錯誤。
這是因為這三個score(i),score(0),score(9)出錯了,這是要輸出數組元素,是score[i],score[0],score[9]才對
問題3:把問題1和2改了之后,程序編譯后,你會發(fā)現輸出的平均分:average=78.00(按%.2f控制2位小數點位數輸出的情況),但實際相除下來,average=78.60才對,問題源自average=num/10,num是整型,10也是,所以num/10也是整型,雖然定義了average為浮點型,但這時num/10還是取了整值再賦給average。解決辦法1就是強制轉換數據類型:average=(double) num/10 【注意這里寫成(double)(num/10)可不對。還可以考慮如(int)(x+y)寫成(int)x+y有何區(qū)別】。辦法2就是average=(double) num/10.0【直接把除數10變成浮點型,這樣方便,其實這里相當于average=num/(double)10】。
2016-12-04
已經運行成功了 ? ?么么噠 ?嘻嘻嘻 ? ?不努力就去死!?。?!