问答详情
源自:6-12 综合练习

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-03 22:15

个回答

  • 慕后端3326841
    2016-12-04 09:14:35
    已采纳

    问题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改了之后,程序编译后,你会发现输出的平均分: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有何区别】。办法2就是average=(double) num/10.0【直接把除数10变成浮点型,这样方便,其实这里相当于average=num/(double)10】。



  • 落叶伤剑
    2016-12-04 19:07:51

    http://img.mukewang.com/5843f8dd00017d5906630431.jpg

    已经运行成功了    么么哒  嘻嘻嘻    不努力就去死!!!!