落叶伤剑
2016-12-03 22:15
#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
我不知道怎么改 麻烦大神求解一下
问题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】。
已经运行成功了 么么哒 嘻嘻嘻 不努力就去死!!!!
C语言入门
926286 学习 · 20799 问题
相似问题