c语言程序,要求将计算每个学生最终成绩的功能设计成函数进行调用;将计算学生平均成绩的功能设计成函数进行调用。
#include <stdio.h>
typedef struct stu
{
int num, TS, PS, ES;
double RS;
} Stu;
double Ave(Stu student[], int n)
{
double sum = 0;
for (int i = 0; i < n; i++)
{
sum += student[i].RS;
}
return sum / n;
}
void getRS(Stu student[], int n)
{
for (int i = 0; i < n; i++)
{
student[i].RS = student[i].TS * 0.6 + student[i].PS * 0.2 + student[i].ES * 0.2;
}
}
int main()
{
Stu student[30];
int n = 0, x;
while (scanf("%d", &x) != EOF)
{
student[n].num = x;
scanf("%d%d%d", &student[n].TS, &student[n].PS, &student[n].ES);
n++;
}
getRS(student, n);
double ave = Ave(student, n);
printf("%6s%6s%6s%6s%6s%8s%8s", "NUM", "TS", "PS", "ES", "RS", ">=AVER", "LEVEL\n");
for (int i = 0; i < n; i++)
{
printf("%6d%6d%6d%6d%6.0lf", student[i].num, student[i].TS, student[i].PS, student[i].ES, student[i].RS);
printf("%7s", (student[i].RS >= ave) ? "T" : "F");
char level;
if (student[i].RS >= 90)
level = 'A';
else if (student[i].RS >= 80 && student[i].RS < 90)
level = 'B';
else if (student[i].RS >= 70 && student[i].RS < 80)
level = 'C';
else if (student[i].RS >= 60 && student[i].RS < 70)
level = 'D';
else
level = 'E';
printf("%7c\n", level);
}
return 0;
}
从题目来看,输入是二维数组,答案是对原数组做了扩充,增加了两列。题目不难,小伙伴可以想一想怎么处理,是不错的练习。
可以看看一位博主写的这篇文章,写得很不错,题目也与题主所贴出的类似,可以做为参考。(C++实现的,该程序可以通过改头文件以及输入输出语句改为C语言,不过重点更侧重于的是实现的思路。)