定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数返回值返回给主调函数。n个学生的成绩可在主调函数中输入。
#include <stdio.h>
int count_above_average(int n, int grades[]) {
int sum = 0;
double average;
int count = 0;
for (int i = 0;
i < n;
i++) {
sum += grades[i];
}
average = (double) sum / n;
for (int i = 0;
i < n;
i++) {
if (grades[i] > average) {
count++;
}
}
return count;
}
int main() {
int n;
int grades[100];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入%d个学生的成绩:\n", n);
for (int i = 0;i < n;i++) {
scanf("%d", &grades[i]);
}
int count = count_above_average(n, grades);
printf("高于平均成绩的人数为:%d\n", count);
return 0;
}
上面的代码用C语言无法运行,请用C语言编译正确的代码。
编译器不支持 for (int i = 0; i < n; i++) 定义循环自变量 i , 代码修改如下,改动处见注释,供参考:
#include <stdio.h>
int count_above_average(int n, int grades[]) {
int sum = 0, i; // 修改
double average;
int count = 0;
for (i = 0; i < n; i++) { //for (int i = 0; i < n; i++) 修改
sum += grades[i];
}
average = (double)sum / n;
for (i = 0; i < n; i++) { //for (int i = 0; i < n; i++) 修改
if (grades[i] > average) {
count++;
}
}
return count;
}
int main() {
int n, i, count; // 修改
int grades[100];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入%d个学生的成绩:\n", n);
for (i = 0; i < n; i++) { //for (int i = 0; i < n; i++) 修改
scanf("%d", &grades[i]);
}
count = count_above_average(n, grades); //int count = count_above_average(n, grades); 修改
printf("高于平均成绩的人数为:%d\n", count);
return 0;
}
无法运行是啥现象啊,你倒是多说一点啊
运行程序后,输入学生的个数,以及对应学生个数的成绩,然后程序就会输出高于平均分的人数。
测试如下:
#include <stdio.h>
int count_above_average(int n, int grades[]) {
int sum = 0;
double average;
int count = 0;
for (int i = 0;
i < n;
i++) {
sum += grades[i];
}
average = (double) sum / n;
for (int i = 0;
i < n;
i++) {
if (grades[i] > average) {
count++;
}
}
return count;
}
int main() {
int n;
int grades[100];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入%d个学生的成绩:\n", n);
for (int i = 0;i < n;i++) {
scanf("%d", &grades[i]);
}
int count = count_above_average(n, grades);
printf("高于平均成绩的人数为:%d\n", count);
return 0;
}