这就是问题所在:我必须阅读一堆数字(学生的成绩),计算它们的平均值,如果平均值低于 70,我必须对成绩(成绩曲线)应用一个因子 +x 或 *x 然后打印班级学生人数和平均人数。我已经编写了整个代码,但我的问题是,在我完成输入数字并且需要输入因子公式后,它会跳过因子应该读取输入的部分,就好像 getchar() 得到我的 ENTER从我完成输入数字开始......对不起,我很难解释这个问题,但这里是代码:
#include <stdio.h>
#define num_of_students 80
int Grades_Array[num_of_students]={0};
int getGrades()
{
int i=0;
int grade_checker=0;
while (grade_checker >= 0)
{
scanf("%d", &grade_checker);
if (grade_checker < 0)
break;
Grades_Array[i] = grade_checker;
i++;
}
return i;
}
float averageGrade(int stud_num)
{
int i=0;
int total=0;
float avg_grade=0;
for (i=0 ; i < stud_num ; i++)
total = total + Grades_Array[i];
avg_grade = total / stud_num;
return avg_grade;
}
void factor(int stud_num)
{
float i=0;
int j=0;
char c=0;
printf("Please enter a factor formula:\n");
while ( c!='\n' && c!=EOF)
{
c=getchar();
if ( c == '+' || c == '*')
{
scanf("%f", &i);
break;
}
}
if ( c == '+')
{
for (j=0 ; j<stud_num ; j++)
{
Grades_Array[j] = Grades_Array[j] + i;
if (Grades_Array[j] > 100)
Grades_Array[j] = 100;
}
}
if ( c == '*')
{
for (j=0 ; j<stud_num ; j++)
{
Grades_Array[j] = Grades_Array[j] * i;
if (Grades_Array[j] > 100)
Grades_Array[j] = 100;
}
}
}
void printAverage(int stud_num, float average)
{
printf("Number of students in the course: %d\n", stud_num);
printf("Average number: %f", average);
}
void main()
{
int i=getGrades();
float avg = averageGrade(i);
if (avg < 70)
factor(i);
printAverage(i, avg);
}
这是我的代码,还有一些注意事项:num_of_students 表示班级中可以容纳的最大学生数,getGrades 函数读取学生的成绩并计算班级 atm 中有多少学生(返回 i)
这是输入和输出的示例:输入:57 99 20 60 69 73 44 100 85 66 75 0 87 73 -1(等级)+3(因子公式
输出:
课程学生人数:14 平均成绩:67.500000
任何帮助将不胜感激,感谢您的宝贵时间!