|
发表于 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);
- }
复制代码
|
|