一个存放学生成绩的一维数组score,编程求平均成绩、最高分和最低分。

要求:
(1) 用main函数实现输入和输出;
(2) 用max函数实现求最高分,参数用数组传递;
(3) 用min函数实现求最低分,参数用指针传递;
(4) 用average函数实现求平均值,用递归算法实现。

/*********************************************
题目:一个存放学生成绩的一维数组score,编程求平均成绩、最高分和最低分
*****************************************************/
# include <iostream>
# define size 100
using namespace std;
float sum = 0;
//函数声明
float cal_average(float *a,int i,int n);
float max(float a[],int n) ;
float min(float *a,int n) ;
int main()
{
int n;
float average;
float max1;
float min1;
float a[size];
//输入数据的个数
printf("输入数据的个数\n");
scanf("%d", &n);
//输入n个数据
printf("输入数据\n");
for(int i = 0; i<n; i++)
scanf("%f", &a[i]);
//求最大值
max1=max(a,n);
printf("最大值%f\n", max1);
//求最小值
min1=min(a,n);
printf("最小值%f\n", min1);
getchar();
//求平均数
average = cal_average(a,0,n);
printf("平均数数%f\n", average);
getchar();
return 0;
}
//递归求平均数
float cal_average(float *a,int i,int n)
{
if(i>=n)
return (sum/n);
else
{
sum += a[i];
return(cal_average(a, i+1, n));
}
}
float max(float a[],int n)
{
float m1;
for(int i=0;i<n-1;i++)
{
if(a[i+1]>a[i])
m1=a[i+1];
else
m1=a[i];
}
return m1;
}
float min(float *a,int n)
{
float m2;
for(int i=0;i<n-1;i++)
{
if(a[i+1]<a[i])
m2=a[i+1];
else
m2=a[i];
}
return m2;
}
把数组a[]换成score[]就行,我没换,道理同上。追问

可是运行结果和上面我给的运行结果截图不同

追答

这不是一样的道理么,调用函数是对的,改变一下输出形势不就可以了么~
# include
# define size 100
using namespace std;
float sum = 0;
//函数声明
float cal_average(float *a,int i,int n);
float max(float a[],int n) ;
float min(float *a,int n) ;
int main()
{
int n;
float average;
float max1;
float min1;
float score[size];
//输入n个数据
printf("输入成绩\n");
for(int i = 0; i>score[i];
//cout<<endl;
}
printf("输出\n");
//求最大值
max1=max(score,3);
printf("最大值%f\n", max1);
//求最小值
min1=min(score,3);
printf("最小值%f\n", min1);
//求平均数
average = cal_average(score,0,3);
printf("平均数数%f\n", average);
system("pause");
return 0;
}
这下主函数搞成这样就可以,一模一样

温馨提示:答案为网友推荐,仅供参考
相似回答