.设计主函数,在主函中应该有正确输入或调用每个学生的学号及各科成绩(输入可以根据不同的情况采用不同的输入方法)。
要求:输入时有必要的提示信息。
设计子函数,可以求每个学生的平均成绩,每门课的平均成绩等、并保存在数组中;
要求:每个学生至少设计两个子函数。
最后结果输出。要求:输出格式要界面直观、清晰犬方、格式规范。
主函数是程序入口,两个子函数相当于方法,主函数调用子函数。提示信息相当于打印出来
不知道你这个问题是否已经解决, 如果还没有解决的话:我可以帮你设计一个学生成绩管理系统的主函数及子函数,具体实现如下:
#include <stdio.h>
#include <stdlib.h>
//计算每个学生的平均成绩
float calcAvg(float arr[], int n){
float sum = 0.0;
for (int i = 0; i < n; i++){
sum += arr[i];
}
return sum / n;
}
//计算每门课的平均成绩
float calcSubAvg(float *arr[], int n, int m){
float sum = 0.0;
for (int i = 0; i < n; i++){
sum += *(arr[i] + m);
}
return sum / n;
}
void manageScore(){
int n = 0;
printf("请输入学生数:");
scanf("%d", &n);
float *score[n];
char *name[n];
for (int i = 0; i < n; i++){
score[i] = (float*)malloc(5 * sizeof(float));
name[i] = (char*)malloc(10 * sizeof(char));
printf("请输入学生%d的学号:", i+1);
scanf("%s", name[i]);
printf("请输入%d号学生的各科成绩:", i+1);
for (int j = 0; j < 5; j++){
scanf("%f", score[i] + j);
}
}
printf("所有学生的各科成绩如下:\n");
printf("学号 数学 物理 英语 历史 政治\n");
for (int i = 0; i < n; i++){
printf("%s\t", name[i]);
for (int j = 0; j < 5; j++){
printf("%.2f\t", *(score[i] + j));
}
printf("\n");
}
printf("第一门课程的平均成绩为:%.2f\n", calcSubAvg(score, n, 0));
printf("每个学生的平均成绩为:\n");
for (int i = 0; i < n; i++){
printf("%s的平均成绩为:%.2f\n", name[i], calcAvg(score[i], 5));
}
printf("每门课的平均成绩为:\n");
printf("数学:%.2f\n", calcSubAvg(score, n, 0));
printf("物理:%.2f\n", calcSubAvg(score, n, 1));
printf("英语:%.2f\n", calcSubAvg(score, n, 2));
printf("历史:%.2f\n", calcSubAvg(score, n, 3));
printf("政治:%.2f\n", calcSubAvg(score, n, 4));
}
int main()
{
manageScore();
return 0;
}
首先,我们要求用户输入学生数。根据学生数,动态地分配内存,存储每个学生的姓名和各科成绩。输入完成绩后,我们会利用循环进行输出,展示学生成绩。接着,调用子函数分别计算每个学生的平均成绩和每门课的平均成绩。最后以清晰、规范化的方式呈现结果输出。
至于显示输出的方式,这里我选择使用了一个简单的表格形式,将各项数据罗列在在一起,方便阅读。