在主函数中输入10个学生的成绩,如何编写被调函数求平均分和平均分以上的学生人数?
代码如下:
int main() {
int values[] = { 1, 2, 3, 4, 5,6, 7, 8 ,9, 10 };
int length = 10;
int count=0;//人数
double average =ReturnAverage(values);
std::cout << "平均值是: " << average << std::endl;
count=ReturnCount(values);
std::cout << "平均分以上的学生人数是: " << count<< std::endl;
return 0;
}
double ReturnAverage(int data[]){
int sum = 0;//总数
for (int i = 0; i < length; i++) {
sum += data[i];
}
//平均值
double a = sum / length;
return a;
}
int ReturnCount(int data[]){
int c
for (int i = 0; i < length; i++) {
if(data[i]>=average ){
c++;
}
}
return c;
}
以下是一个示例代码,其中calculate函数用于计算平均分和平均分以上的学生人数。
#include <stdio.h>
#define MAX_STUDENTS 10
void calculate(int *scores, int size, float *average, int *above_average) {
int sum = 0;
*above_average = 0;
for (int i = 0; i < size; i++) {
sum += scores[i];
}
*average = (float) sum / size;
for (int i = 0; i < size; i++) {
if (scores[i] >= *average) {
(*above_average)++;
}
}
}
int main() {
int scores[MAX_STUDENTS];
float average;
int above_average;
// 输入10个学生的成绩
printf("请输入10个学生的成绩:\n");
for (int i = 0; i < MAX_STUDENTS; i++) {
scanf("%d", &scores[i]);
}
// 计算平均分和平均分以上的学生人数
calculate(scores, MAX_STUDENTS, &average, &above_average);
// 输出结果
printf("平均分为%.2f,平均分以上的学生人数为%d。\n", average, above_average);
return 0;
}
其中calculate函数接受三个参数,分别是指向成绩数组、成绩数组大小、平均分和平均分以上的学生人数的指针。函数内部使用一个循环计算总分,并通过传入的指针计算平均分。接着再使用一个循环统计平均分以上的学生人数。在主函数中,先输入学生成绩,再调用calculate函数计算平均分和平均分以上的学生人数,最后输出结果。
#include <stdio.h>
main() {
int i, cnt = 0;
float a[10], avg = 0;
printf("请输入十个同学成绩:");
for (i = 0; i < 10; i++) {
scanf("%f", &a[i]);
avg += a[i];
}
avg = avg / 10;
for (i = 0; i < 10; i++) {
if (a[i] < avg)
cnt++;
}
printf("低于平均分人数为:%d", cnt);
}