qq_二狗君_0
2016-12-07 08:56
#include <stdio.h>
int total(int score[])
{
int i,sum;
for(i=0;i<=9;i++)
{
sum += score[i];
}
return sum;
}
float aver(int score[])
{
return total(score);
}
void a(int score[])
{
int i,j;
for(i=8;i>=0;i--)
{
for(j=0;j<=i;j++)
{
if(score[j]>score[j+1])
{
int temp;
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
}
int main()
{
int i;
int score[10]={67,98,75,63,82,79,81,91,66,84};
printf("总分%d\n",total(score));
printf("平均%.1f\n",aver(score));
a(score);
for(i=0;i<=9;i++)
{
printf("%d\n",score[i]);
}
return 0;
}
第一个求和函数中sum没有在开始赋予初值0,你的main函数中求和调用了一次,求平均调用了一次,求平均时的total返回的是每个元素加个两次的和,导致你求出的平均值是实际平均值78.7的两倍,那为什么不是157.4呢?因为你aver函数中total(score)返回的是整型值,舍去小数是157,而aver函数是float型,所以返回值被转换成了浮点数157.0.
你没有设置总个数,平均数函数中也没有除以总个数
你只是返回total了,没有平均啊。
C语言入门
926027 学习 · 20793 问题
相似问题