函数+数组(计算学生成绩)
问题描述 :键盘输入某班学生某门课的成绩 计算平均分+实际输入成绩的学生人数+打印最高成绩
分块实现
1 人数+成绩平均值计算
#include<stdio.h>
#define N 40
int Average(int score[],int n);
void ReadScore(int score[],int n);
int main()
{
int score[N],aver,n;
printf("input n:");
scanf("%d",&n);
ReadScore(score,n); //数组名作为函数实参调用函数R
aver=Average(score,n); //数组名作为函数实参调用函数A
printf("Average score is %d\n", aver);
return 0;
}
int Average(int score[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
return sum/n;
}
void ReadScore(int score[],int n)
{
int i;
printf("input score:");
for(i=0;i<n;i++)
{
scanf("%d",&score[i]);
}
}
2 加入不合法数据输入验证
#include<stdio.h>
#define N 40
int Average(int score[],int n);
int ReadScore(int score[]);
int main()
{
int score[N],aver,n;
n=ReadScore(score); //调用函数+学生人数返回
printf("total students is %d\n",n);
aver=Average(score,n);
printf("Average score is %d\n", aver);
return 0;
}
int Average(int score[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
return n>0 ?sum/n:-1;
}
int ReadScore(int score[])
{
int i=-1;
do
{
i++;
printf("input score:");
scanf("%d",&score[i]);
}while(score[i]>0); //数据输入为负值,结束输入;
return i;
}
3 读取出输入成绩中的最高分
#include<stdio.h>
#define N 40
int Average(int score[],int n);
int ReadScore(int score[]);
int FindMax(int score[],int n);
int main()
{
int max,score[N],aver,n;
n=ReadScore(score); //调用函数+学生人数返回
printf("total students is %d\n",n);
aver=Average(score,n);
max=FindMax(score,n);
printf("Average score is %d\n", aver);
printf("highest score is %d\n", max);
return 0;
}
int FindMax(int score[],int n)
{
int max;
for(int i=0;i<=n;i++)
{
if(score[i]>max)
{
max=score[i];
}
}
return max;
}
int Average(int score[],int n)
{
int i,sum=0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
return n>0 ?sum/n:-1;
}
int ReadScore(int score[])
{
int i=-1;
do
{
i++;
printf("input score:");
scanf("%d",&score[i]);
}while(score[i]>0); //数据输入为负值,结束输入;
return i;
}
运行显示