题目:
有10个学生,每个学生的数据包括学号,姓名,三门课程成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课程成绩、平均分数)
代码:
//10个学生
#include <stdio.h>
#define N 10
//函数声明区
void input(struct Student stu[]);
struct Student max(struct Student stu[]);
void print(struct Student stud);
//结构体
struct Student
{
int num;
char name[100];
float score[3];
float total;
float average;
};
int main()
{
struct Student stu[N];
input(stu);
print(max(stu));
return 0;
}
void input(struct Student stu[])
{
int i,j;
printf("请输入%d位学生的学号、姓名和成绩:\n",N);
for (i = 0; i < N; i++)
{
scanf("%d %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].total = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
stu[i].average = stu[i].total / 3;
}
for (j = 0; j < N; j++)
{
printf("学号:%d 姓名:%s 的平均成绩为:%.2f",stu[j].num, stu[j].name, stu[j].average);
printf("\n");
}
}
struct Student max(struct Student stu[])//定义max函数
{
int i, m = 0;//用m存放成绩最高的学生在数组中的序号
for (i = 0; i < N; i++)
{
if (stu[i].average > stu[m].average)
m = i;
}
return stu[m];
}
void print(struct Student stud)
{
printf("\n成绩最高的学生为:\n");
printf("学号:%d 姓名 : %s 的三门成绩为:%.2f,%.2f,%.2f,其平均成绩为: % .2f", stud.num, stud.name, stud.score[0], stud.score[1], stud.score[2], stud.average);
};
注意事项:
- N的值可以自己改,对应的是学生人数,如果是3个人,就把#define N 10 改为#define N 3
- 由于
int类型可以存储的整数值的范围取决于其大小。对于 32 位int,范围通常是从 -2,147,483,648 到 2,147,483,647(即 -2^31 到 2^31 - 1)。对于 64 位int,范围会更大。所以在输入学号的时候,数值不能大于int的最大值,如果需要输入更大的, 可以将int类型改为char的字符串类型。 - 在
max函数中,变量m应该初始化为0,这样在第一次比较时,就可以正确地将第一个学生的成绩作为初始的最高成绩。
涉及知识点:
-
宏定义:使用
#define指令定义了一个宏N,表示学生的数量。 -
结构体(Struct):定义了一个名为
Student的结构体,用于存储学生的学号、姓名、三门课程的成绩、总成绩和平均成绩。 -
函数声明:在函数实现之前声明了函数原型,包括
input、max和print函数。 -
主函数(main):程序的入口点,创建了一个
Student类型的数组stu,调用input函数填充数据,然后调用max函数找到平均成绩最高的学生,最后调用print函数打印该学生的信息。 -
输入函数(input):使用
scanf函数从标准输入读取学生数据,包括学号、姓名和三门课程的成绩。 -
循环结构:在
input函数中使用for循环来处理多个学生的数据。 -
计算总成绩和平均成绩:在
input函数中,计算每个学生的总成绩和平均成绩,并将结果存储在结构体实例中。 -
条件语句(if):在
max函数中使用if语句来比较学生的平均成绩,以找到最高平均成绩的学生。 -
数组和索引:在
max函数中使用数组索引来访问和比较学生数据。 -
返回结构体:
max函数返回一个Student结构体实例,表示平均成绩最高的学生。 -
输出函数(print):使用
printf函数打印学生信息,包括学号、姓名、三门课程的成绩和平均成绩。 -
格式化输出:在
printf函数中使用格式化字符串来控制输出格式,如%d、%s、%.2f等。 -
字符串处理:在
scanf和printf中处理字符串输入和输出,注意使用%s来读取和打印字符串。
如果看到这里的话,麻烦可以点个赞👍吗,谢谢你!😊
本人还是小白,如有不足,多多指教!也欢迎更多小伙伴在底下评论,互相学习交流!
549

被折叠的 条评论
为什么被折叠?



