编写一个函数printScore,打印一个学生的信息。学生信息包括: 学号、姓名和成绩 (包括3门课程的成绩,可用一个数组表示);在main函数中输入N(5)个学生的信息,调用printScore函数输出信息。
答:#include<stdio.h>struct student { int no; char name[20]; int score[3]; };void printScore(struct student stu){ printf("学号:%d\n", stu.no); printf("姓名:%s\n", stu.name); printf("成绩:"); for(int i=0;i<3;i++){ printf("%d",stu.score[i]); if(i<2) printf(","); } printf("\n"); }int main(){ int N; scanf("%d", &N); struct student stu[N]; for(int i=0;i<N;i++){ scanf("%d %s %d %d %d", &stu[i].no, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]); } for(int i=0;i<N;i++){ printScore(stu[i]); } return 0; }
有5个学生,每个学生的数据包括学号、姓名、3门课程的成绩。编写input函数用来输入5个学生的数据记录;编写print函数用来输出每位学生的学号、姓名、3门课程成绩及平均分;编写max_score函数用来寻找平均分最高的学生信息。
好的,我可以为您提供帮助。下面是一个示例代码,用来实现您的要求:
# 定义一个字典,用来保存每个学生的数据记录
students = {}
# 定义一个函数,用来输入5个学生的数据记录
def input_data():
for i in range(5):
# 输入学号、姓名和3门课程的成绩
sid = input("请输入学号:")
name = input("请输入姓名:")
score1 = int(input("请输入第1门课程的成绩:"))
score2 = int(input("请输入第2门课程的成绩:"))
score3 = int(input("请输入第3门课程的成绩:"))
# 保存学生数据记录到字典中
students[sid] = {"name":name, "scores":[score1, score2, score3]}
# 定义一个函数,用来输出每位学生的学号、姓名、3门课程成绩及平均分
def print_data():
for sid in students:
# 获取学生姓名和3门课程成绩
name = students[sid]["name"]
scores = students[sid]["scores"]
# 计算平均分
avg_score = sum(scores) / len(scores)
# 输出学生数据记录
print("学号:{},姓名:{},课程1成绩:{},课程2成绩:{},课程3成绩:{},平均分:{}".format(sid, name, scores[0], scores[1], scores[2], avg_score))
# 定义一个函数,用来寻找平均分最高的学生信息
def max_score():
max_avg_score = 0
max_sid = ""
for sid in students:
# 获取学生姓名和3门课程成绩
name = students[sid]["name"]
scores = students[sid]["scores"]
# 计算平均分
avg_score = sum(scores) / len(scores)
# 如果平均分比当前最高分更高,则更新最高分和对应的学生编号
if avg_score > max_avg_score:
max_avg_score = avg_score
max_sid = sid
# 输出平均分最高的学生信息
print("平均分最高的学生是:学号:{},姓名:{},平均分:{}".format(max_sid, students[max_sid]["name"], max_avg_score))
# 调用函数,执行程序
input_data()
print_data()
max_score()
您可以直接复制上述代码并运行,也可以根据自己的需求进行修改。希望对您有所帮助!
编写一个输入函数input和一个打印函数print,输入和打印一组学生信息,每个学生信息包括学号num、name和3门课程成绩sore[3]。用主函数调用输入函数和输出函数输入和输出这些学生信息
你可以使用以下代码来实现输入函数input和打印函数print以及主函数main:
#include <stdio.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LENGTH 50
struct student {
long num;
char name[MAX_NAME_LENGTH];
float score[3];
};
int input(struct student *students, int n) {
int i;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%ld", &students[i].num);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的3门课程成绩:", i+1);
scanf("%f %f %f", &students[i].score[0], &students[i].score[1], &students[i].score[2]);
}
return n;
}
void print(struct student *students, int n) {
int i, j;
for (i = 0; i < n; i++) {
printf("学生%d:\n", i+1);
printf("学号:%ld\n", students[i].num);
printf("姓名:%s\n", students[i].name);
printf("成绩:");
for (j = 0; j < 3; j++) {
printf("%.2f ", students[i].score[j]);
}
printf("\n");
}
}
int main() {
struct student students[MAX_STUDENTS];
int n;
printf("请输入学生的数量:");
scanf("%d", &n);
if (n > MAX_STUDENTS) {
printf("学生数量超过最大限制!\n");
return 1;
}
input(students, n);
print(students, n);
return 0;
}
这段代码首先定义了一个结构体student
来表示学生信息,包括学号num
、姓名name
和3门课程成绩sore[3]
。
然后定义了输入函数input
,它接受一个指向student
结构体数组的指针和学生数量作为参数,通过循环提示用户输入每个学生的信息,并将输入的值保存到相应的结构体中。
接下来定义了打印函数print
,它接受一个指向student
结构体数组的指针和学生数量作为参数,通过循环打印每个学生的信息。
最后在主函数main
中,首先要求用户输入学生的数量,并检查是否超过最大限制。然后调用输入函数input
来输入学生信息,再调用打印函数print
来输出学生信息。
注意:这里假设学生数量不会超过最大限制,并且姓名长度不超过定义的最大长度。如果需要更严格的输入检查,可以在代码中进行相应的修改。
相关推荐
















