定义了一个数组 scores 来存储学生的成绩,同时定义了变量 n 表示学生人数, max 表示最高分, min 表示最低分, sum 表示总分, average 表示平均分。首先让用户输入学生人数 n 。
通过一个 for 循环,依次让用户输入每个学生的成绩,并将成绩存储到数组 scores 中。 然后初始化最高分 max 和最低分 min 为数组的第一个元素 scores[0] ,并将其累加到总分 sum 中。再通过另一个 for 循环遍历数组,从数组的第二个元素开始,比较每个元素与当前最高分 max 和最低分 min 的大小,更新 max 和 min ,同时将每个元素累加到总分 sum 中。计算平均分 average ,将总分 sum 除以学生人数 n ,并转换为 double 类型以保留小数。最后输出最高分、最低分和平均分。
下面是代码:
#include <stdio.h>
int main() {
int n, scores[100]; // 假设最多100个学生,可根据实际情况修改
int max, min, sum = 0;
double average;
// 输入学生人数
printf("请输入学生人数: ");
scanf("%d", &n);
// 输入学生成绩并存入数组
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的成绩: ", i + 1);
scanf("%d", &scores[i]);
}
// 初始化最高分和最低分
max = min = scores[0];
sum += scores[0];
// 遍历数组,更新最高分、最低分和总分
for (int i = 1; i < n; i++) {
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
sum += scores[i];
}
// 计算平均分
average = (double)sum / n;
// 输出结果
printf("最高分: %d\n", max);
printf("最低分: %d\n", min);
printf("平均分: %.2lf\n", average);
return 0;
}
也可以多实现其他功能,eg:及格率和优秀率等等
以下是加入及格率和优秀率的代码:
#include<stdio.h>
#include<math.h>
int main(){
int a[100],max,min,n,sum=0;
double ave;
int t=0,b=0;
int sum1=0,sum2=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("%d学生的成绩",i+1);
scanf("%d",&a[i]);
}
max=min=a[0];
sum+=a[0];
for(int i=1;i<n;i++){
if(a[i]>max){
max=a[i];
}
if(a[i]<min){
min=a[i];
}
sum+=a[i];
}
for(int i=0;i<n;i++){
if(a[i]>=60){
t++;
sum1+=a[i];
}
if(a[i]>=85){
b++;
sum2+=a[i];
}
}
ave=sum/n;
double ave1=sum1/t;
double ave2=sum2/b;
printf("%d\n",max);
printf("%d\n",min);
printf("%.2f\n",ave);
printf("%.2f\n",ave1);
printf("%.2f\n",ave2);
return 0;
}
希望对大家有帮助。