下面这个程序中,main函数中的i在for循环里面是从0开始的,那么最后i是会等于等于总人数减一。然后自定义函数getCnt里的第一个for循环求学生总成绩中的i是应该i<=n吧?如果不等于n的话,不就是会漏掉最后一个学生的成绩嘛?请问一下我这个思路有问题嘛,万分感谢!
#include<stdio.h>
#pragma warning(disable:4996)
/*输入某班学生某门课程的成绩(最多不超过40人),当输入为负值时,
表示输入结束,用函数编程统计成绩高于平均分的学生人数,请定义getCnt函数。*/
#define MAX 40
int getCnt(int a[], int n);
int main()
{
int grade[MAX]; //定义分数数组且其最多为40人
int i = -1, n; //i为统计输入的人数,由0开始到结束
int cnt = 0; //cnt代表高于平均分的人数
do {
i++;
printf("Input grade[%d]:", i);
scanf("%d", &grade[i]);
} while (grade[i] >= 0); //当成绩仍为正值时返回do处继续执行上面的指令
printf("i=%d\n", i); //
cnt = getCnt(grade, i);
printf("cnt=%d\n", cnt);
return 0;
}
int getCnt(int a[], int n)
{
int i, cnt = 0, sum = 0;
double avg;
for (i = 0; i < n; i++)
{
sum += a[i];
}
avg = sum * 1.0 / n;
printf("%f", avg);
for (i = 0; i < n; i++)
{
if (a[i] > avg)
cnt++;
}
return cnt;
}