落叶伤剑
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语言入门
927929 学习 · 21542 问题
相似问题