C语言作业--有10个学生,每个学生的数据包括学号,姓名,三门课程成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课程成绩、平均分数)

题目:

 有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);
};

 注意事项:

  1. N的值可以自己改,对应的是学生人数,如果是3个人,就把#define N 10 改为#define N 3 
  2. 由于int 类型可以存储的整数值的范围取决于其大小。对于 32 位 int,范围通常是从 -2,147,483,648 到 2,147,483,647(即 -2^31 到 2^31 - 1)。对于 64 位 int,范围会更大。所以在输入学号的时候,数值不能大于int的最大值,如果需要输入更大的,                          可以将int类型改为char的字符串类型
  3. max 函数中,变量 m 应该初始化为0,这样在第一次比较时,就可以正确地将第一个学生的成绩作为初始的最高成绩。

涉及知识点: 

  1. 宏定义:使用 #define 指令定义了一个宏 N,表示学生的数量。

  2. 结构体(Struct):定义了一个名为 Student 的结构体,用于存储学生的学号、姓名、三门课程的成绩、总成绩和平均成绩。

  3. 函数声明:在函数实现之前声明了函数原型,包括 inputmaxprint 函数。

  4. 主函数(main):程序的入口点,创建了一个 Student 类型的数组 stu,调用 input 函数填充数据,然后调用 max 函数找到平均成绩最高的学生,最后调用 print 函数打印该学生的信息。

  5. 输入函数(input):使用 scanf 函数从标准输入读取学生数据,包括学号、姓名和三门课程的成绩。

  6. 循环结构:在 input 函数中使用 for 循环来处理多个学生的数据。

  7. 计算总成绩和平均成绩:在 input 函数中,计算每个学生的总成绩和平均成绩,并将结果存储在结构体实例中。

  8. 条件语句(if):在 max 函数中使用 if 语句来比较学生的平均成绩,以找到最高平均成绩的学生。

  9. 数组和索引:在 max 函数中使用数组索引来访问和比较学生数据。

  10. 返回结构体max 函数返回一个 Student 结构体实例,表示平均成绩最高的学生。

  11. 输出函数(print):使用 printf 函数打印学生信息,包括学号、姓名、三门课程的成绩和平均成绩。

  12. 格式化输出:在 printf 函数中使用格式化字符串来控制输出格式,如 %d%s%.2f 等。

  13. 字符串处理:在 scanfprintf 中处理字符串输入和输出,注意使用 %s 来读取和打印字符串。

如果看到这里的话,麻烦可以点个赞👍吗,谢谢你!😊

本人还是小白,如有不足,多多指教!也欢迎更多小伙伴在底下评论,互相学习交流! 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值