|
发表于 2015-7-4 17:39:16
|
显示全部楼层
这楼正解,都是些小问题可以优化下,函数参数一般就是数组计算的话就用数组名和数组个数2个参数,
int average(int a[10],int b); 改成double average(int a[],int b);
//好像你的函数是有返回值的,在average(int a[],int b);函数前面加double,这个不加有的编译器会警告假设默认返回值int 型,
[10]没用的,编译器不认识它的你写了也白写还不规范,用b来表示数组成员个数#include<stdio.h>
const int SIZE=10 ; //define SIZE 10 也行,数组成员用这个的话以后想改起来方便点
double average(int a[],int b); //average(int a[],int b) 省略10 加上double 明了些
int main()
{
int greads[SIZE] ;
int i ; // int a,i,n=1; int greads[10]; 这里有2个变量a和n可以不用
for(i=0;i<10;i++)
{
printf("请输入第%d位同学的成绩\n",i+1); //printf("请输入第%n位同学的成绩\n",n);这里小问题
scanf("%d",&greads[i]);
}
printf("平均成绩为:%lf",average(greads,SIZE));//可以子界用函数的返回值打印,少用个变量
return 0 ;
}
double average(int a[],int b) //这里加个double,平均值应该是浮点数嘛,用double合适些
{
int i ; //int i,n=0,v=0; 这里把总和设为double型好些,以防两个int用地板除(/)被截断丢失精度
double v ,n = 0.0 ;
for(i=0;i<b;i++)
n += a[i]; // n=a+n; 这里有点小问题
v = n/b;
printf("%lf\n",v); //这句是在函数内就打印出了平均值,不过你好像是要用平均值返回打印的,打印了2次啊?,好像没用
return(v);
}
|
|