题目描述
输入10名学生的英语、 C 语言、计算机文化基础成绩,统计每名学生三科成绩的平均分,成绩的最大值、最小值等。分析三门课程的优秀率,85分以上为优秀。应运用选择、循环、数组、函数、等所学知识,完成的设计任务,并顺利调试通过并运行所编制的程序。
(一)设计主函数,在主函数中应该有正确输入或调用每个学生的学号及各科成绩。
(二)设计子函数,可以求每个学生的平均成绩,每门课的平均成绩、成绩的最大值、最小值等、并保存在数组中;
(三)最后结果输出。对所选题目对应程序的运行情况做详细分析,总结本次设计所取得的经验
案例代码
#include <stdio.h>
// 学生数量
#define STUDENT_NUM 10
// 成绩结构体
typedef struct {
float english;
float c_language;
float computer_culture;
} Score;
// 统计信息结构体
typedef struct {
float max_english;
float min_english;
float max_c_language;
float min_c_language;
float max_computer_culture;
float min_computer_culture;
float avg_english;
float avg_c_language;
float avg_computer_culture;
float excellent_rate;
} Statistics;
// 函数声明
void inputScores(Score scores[], int n);
void calculateStatistics(const Score scores[], Statistics *stats, int n);
void outputStatistics(const Statistics *stats);
int main() {
Score scores[STUDENT_NUM];
Statistics stats;
inputScores(scores, STUDENT_NUM);
calculateStatistics(scores, &stats, STUDENT_NUM);
outputStatistics(&stats);
return 0;
}
// 输入学生成绩
void inputScores(Score scores[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d名学生的英语成绩:", i+1);
scanf("%f", &(scores[i].english));
printf("请输入第%d名学生的C语言成绩:", i+1);
scanf("%f", &(scores[i].c_language));
printf("请输入第%d名学生的计算机文化基础成绩:", i+1);
scanf("%f", &(scores[i].computer_culture));
}
}
// 计算统计信息
void calculateStatistics(const Score scores[], Statistics *stats, int n) {
float total_english = 0;
float total_c_language = 0;
float total_computer_culture = 0;
float max_english = scores[0].english;
float min_english = scores[0].english;
float max_c_language = scores[0].c_language;
float min_c_language = scores[0].c_language;
float max_computer_culture = scores[0].computer_culture;
float min_computer_culture = scores[0].computer_culture;
int excellent_count = 0;
for (int i = 0; i < n; i++) {
total_english += scores[i].english;
total_c_language += scores[i].c_language;
total_computer_culture += scores[i].computer_culture;
if (scores[i].english > max_english) {
max_english = scores[i].english;
}
if (scores[i].english < min_english) {
min_english = scores[i].english;
}
if (scores[i].c_language > max_c_language) {
max_c_language = scores[i].c_language;
}
if (scores[i].c_language < min_c_language) {
min_c_language = scores[i].c_language;
}
if (scores[i].computer_culture > max_computer_culture) {
max_computer_culture = scores[i].computer_culture;
}
if (scores[i].computer_culture < min_computer_culture) {
min_computer_culture = scores[i].computer_culture;
}
if (scores[i].english > 85 && scores[i].c_language > 85 && scores[i].computer_culture > 85) {
excellent_count++;
}
}
stats->max_english = max_english;
stats->min_english = min_english;
stats->max_c_language = max_c_language;
stats->min_c_language = min_c_language;
stats->max_computer_culture = max_computer_culture;
stats->min_computer_culture = min_computer_culture;
stats->avg_english = total_english / n;
stats->avg_c_language = total_c_language / n;
stats->avg_computer_culture = total_computer_culture / n;
stats->excellent_rate = (float) excellent_count / n;
}
// 输出统计信息
void outputStatistics(const Statistics *stats) {
printf("英语成绩最高分:%.2f\n", stats->max_english);
printf("英语成绩最低分:%.2f\n", stats->min_english);
printf("C语言成绩最高分:%.2f\n", stats->max_c_language);
printf("C语言成绩最低分:%.2f\n", stats->min_c_language);
printf("计算机文化基础成绩最高分:%.2f\n", stats->max_computer_culture);
printf("计算机文化基础成绩最低分:%.2f\n", stats->min_computer_culture);
printf("英语成绩平均分:%.2f\n", stats->avg_english);
printf("C语言成绩平均分:%.2f\n", stats->avg_c_language);
printf("计算机文化基础成绩平均分:%.2f\n", stats->avg_computer_culture);
printf("优秀率:%.2f%%\n", stats->excellent_rate * 100);
}
这个程序会先让用户输入每个学生的英语、C语言和计算机文化基础成绩,然后统计每门课程的最高分、最低分和平均分,以及整体的优秀率。最后输出统计信息。
这个程序使用了结构体来保存每个学生的成绩,使用了循环来遍历每个学生的成绩,使用了选择来判断最大值、最小值和优秀率。还使用了函数来模块化代码,使程序更易读、易维护。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END